【傻瓜教程】jsp连接MySQL数据库,及连接过程中出现空指针的坑。[附java与Mysql驱动程序下载]

课程作业中的网站要实现后台,需要进行数据库连接。记录连接过程及掉进去的坑。

  1. 在Eclips中新建一个动态网站,输入项目名称。
    File - New - Dynamic Web Project
    在这里插入图片描述

  2. 右击项目,新建一个jsp文件
    在这里插入图片描述

  3. 通过Workbench来新建数据库。首先打开workbench,进入默认的数据库连接中。
    在这里插入图片描述

  4. 在左侧nevigator导航栏中右击,新建一个Schema,输入数据库名称。我的数据库名称是program。
    在这里插入图片描述

  5. 双击建好的Schema,使其变黑,单击进入后选择table,右击新建表。我的表名称是new_table在这里插入图片描述

  6. 新建表时会发现没办法新建列,是需要点右上角的这两个上箭头。实在是太坑了。
    在这里插入图片描述

  7. 建好表之后,右击选择select rows,然后可以输入表的内容。

  8. 将mysql的纯java数据库驱动程序“mysql-connector-java-5.1.45-bin.jar”复制到web文件夹的WEB-INF/lib目录下。(驱动程序附下载,见文末[^1])
    在这里插入图片描述

  9. 重点来了,通过Jsp来连接数据库,代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>访问MySQL数据库</title>
</head>
<body>
	<%
		Connection con = null;
		Statement st = null;
		ResultSet rs = null;
		//加载驱动
		try {
    
    
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
    
    
			e.printStackTrace();
		}
		out.print("sa");
		try {
    
    
			//前面都是一致的操作,可以直接复制粘贴,从建立连接开始要根据自己的数据库名称,用户名和密码来进行。
			//建立连接。“jdbc:mysql://localhost:3306/+数据库名+?characterEncoding=utf-8",用户名,密码
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/program?characterEncoding=utf-8","root","123456");
			st = con.createStatement();
			//发送查询SQL语句,返回结果集
			rs = st.executeQuery("select * from new_table ");
			while(rs.next()){
    
    
				out.print(rs.getString("id") + "&nbsp;&nbsp;");
				out.print(rs.getString("year") + "&nbsp;&nbsp;");
				out.print(rs.getString("name") + "&nbsp;&nbsp;");
				out.print("<br>");
			}  
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally{
    
    
			rs.close();
			st.close();
			con.close();
		}	
	%>
</body>
</html>
  1. 本来以为到这里应该结束了,但谁知道一直无法打印数据库的内容。报错显示在rs.close()这里出现异常,通过代码测试if(rs == null){out.print(“rs is null”);},发现确实rs为空,而且也提示有NullPointerException空指针错误。核心原因提示Unable to load authentication plugin caching_sha2_password 。虽然不知道这是个什么鬼东西。思来想去一整天,觉得怎么可能数据库没连上呢?甚至吧workbench重装了还是一样。在网上找了n多教程,终于找到了。
    **原来是因为从MySQL 8.0.4开始, 默认的认证插件从mysql_native_password 变为caching_sha2_password. 需要进入mysql命令行来执行如下语句。并注意把你的用户名和密码替换掉。
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

TIPS:不会进入mysql命令行的傻瓜教程:
12. 管理员身份运行cmd,在文件夹中找到mysql,选择Bin目录并进入
在这里插入图片描述
13. 输入mysql -uroot -p和密码,进入Mysql
在这里插入图片描述
14. 输入上述更改密码的指令
在这里插入图片描述
15. 这时再运行jsp代码,就不会再报错啦!5555终于可以正常显示内容了,我都要哭了。
在这里插入图片描述

附:
驱动下载地址
提取码: g7c9

猜你喜欢

转载自blog.csdn.net/a61022706/article/details/115982283
今日推荐