JDBC连接MySQL产生java.lang.ClassNotFoundException异常

最近JSP作业使用JDBC连接MySQL数据库,将表单提交的数据存入本地MySQL数据库,写好了JDBCUtils类的增删改差方法后,程序运行后发现数据一直无法插入数据库,数据库插入代码如下:

public class JdbcUtils {

	// 数据库用户名
	private static final String USERNAME = "root";
	// 数据库密码
	private static final String PASSWORD = "root";
	// 驱动信息
	private static final String DRIVER = "com.mysql.jdbc.Driver";
	// 数据库地址
	private static final String URL = "jdbc:mysql://localhost:3306/BookStore";

	private static Connection connection;
	private static Statement statement;

	// private PreparedStatement pstmt;
	// private ResultSet resultSet;

	public JdbcUtils() {
		try {
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 连接数据库
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		try {
			Class.forName(DRIVER);
			connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
			System.out.println(connection.toString());
		} catch (SQLException e) {
			System.out.println("the error is " + e.toString());
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			System.out.println("the exception is " + e.toString());
			e.printStackTrace();
		}
		return connection;
	}

	/**
	 * 插入数据库
	 * 
	 * @param user
	 * @return
	 */
	public static boolean insert(User user) {

		getConnection(); // 连接数据库

		// 数据库插入操作
		try {
			String sql = "insert into info values(" + user.getUserName() + ", "
					+ user.getPwd() + ", " + user.getGender() + ", "
					+ user.getAge() + ", " + user.getAcademic() + ", "
					+ user.getHobbiesByString() + ", " + user.getSelfIntro()
					+ ")";
			if (connection != null) {
				statement = connection.createStatement();
				int i = statement.executeUpdate(sql);
				if (i > 0) {
					System.out.println("数据库插入成功");
				} else {
					System.out.println("数据库表插入失败");
				}
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			System.out.println(connection == null ? "true" : "false");
			release(connection, statement);
		}
		return false;
	}

	/**
	 * 释放资源
	 * 
	 * @param conenction
	 * @param statement
	 */
	public static void release(Connection conenction, Statement statement) {
		try {
			if (statement != null) {
				statement.close();
			}
			if (connection != null) {
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

控制台打印信息如下:

the exception is java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:191)
	at com.cooffee.util.JdbcUtils.getConnection(JdbcUtils.java:45)
	at com.cooffee.util.JdbcUtils.insert(JdbcUtils.java:60)
	at com.cooffee.util.MyServlet.doPost(MyServlet.java:62)
	at com.cooffee.util.MyServlet.doGet(MyServlet.java:35)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

可以看到,控制台打印的错误是ClassNotFoundException,产生异常的原因是未找到com.mysql.jdbc.mysql中的类,所以我们只要将mysql-connector-java的jar包导入进来就好,注意,导入的tomcat中的lib文件夹。


报出该异常的原因还有可能是驱动包与MySQL的版本有关,找好对应的版本,该异常也会解决。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值