2017-05-07 44 views
0

這是我簡單的代碼與MySQL來測試連接:的ClassNotFoundException中的Apache Tomcat 8.5.14

import java.sql.*; 
import java.util.*; 

public class PreparedStatementTest { 

    public static void main(String[] args) throws Exception { 
     String[] str = {"ram", "shyam", "radhe", "lakhan"}; 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection con = DriverManager.getConnection("jdbc:odbc:shubh", "sa", "shubham"); 
     PreparedStatement ps = con.prepareStatement("insert into shubham_table values(?,?)"); 
     for (int i = 0; i < 4; i++) { 
      ps.setInt(1, i); 
      ps.setString(2, str[i]); 
      ps.executeUpdate(); 
     } 
     PreparedStatement prs = con.prepareStatement("select *from shubham_table where id=?"); 
     for (int i = 0; i < 4; i++) { 
      prs.setInt(1, i); 
      ResultSet rs = prs.executeQuery(); 
      while (rs.next()) { 
       System.out.print("id = " + rs.getInt(1)); 
       System.out.println("name = " + rs.getString(2)); 

      } 
     } 
     rs.close(); 
     prs.close(); 
     ps.close(); 
     con.close(); 
    } 
} 

此代碼工作正常,並更新我的已經存在的表中的數據庫,但是當我嘗試創建一個連接我在Apache上的web應用程序拋出ClassNotFoundException。我的應用程序中的源代碼是

import javax.servlet.*; 
import java.io.*; 
import java.sql.*; 
import java.util.*; 

public class RegFormServlet implements Servlet { 

    public void init(ServletConfig sc) throws ServletException { 

     System.out.println("created"); 
    } 

    public ServletConfig getServletConfig() { 
     return null; 
    } 

    public void service(ServletRequest req, ServletResponse res) throws 
      ServletException, IOException { 

     System.out.println("before con mysql"); 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con = DriverManager.getConnection("jdbc:odbc:shubh", "sa", "shubham"); 

      String name = req.getParameter("name"); 
      String email = req.getParameter("email"); 
      String address = req.getParameter("address"); 

      Statement st = con.createStatement(); 
      String ddl = 
      "create table shubham_table3 (name varchar(30),e-mail 
      varchar(20) 
      ,address varchar 
      (100))"; 
     st.execute(ddl); 

      PreparedStatement ps = con.prepareStatement(
      "insert into shubham_table 
     values(?, ?, ?) 
      "); 
     ps.setString(1, name); 
      ps.setString(2, email); 
      ps.setString(3, address); 
      PrintWriter out = res.getWriter(); 
      out.println("You Are Registered Successfully yeah!!!!"); 
      st.close(); 
      ps.close(); 
      con.close(); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 

    } 

    public String getServletInfo() { 
     return null; 
    } 

    public void destroy() { 

    } 
} 

我該如何解決這個問題?

+0

你使用的是oracle還是mysql? –

+0

在Java 8中刪除了JDBC/ODBC橋,而應該使用具有**不同** JDBC URL的MySQL Connector/J驅動程序。 –

回答

0

您正在使用Type1 jdbc驅動程序連接到Mysql數據庫。請檢查Tomcat及其jdk版本。從Jdk8起,Type1驅動程序不允許使用。

或者,您可以使用Mysql Type4驅動程序來執行操作。這裏是link

一旦下載mysql連接器驅動程序,將它添加到/ WEB-INF/lib文件夾。

希望它應該解決問題。

相關問題