【傻瓜教程】jsp连接MySQL数据库,及连接过程中出现空指针的坑。[附java与Mysql驱动程序下载]
【傻瓜教程】jsp连接MySQL数据库,及连接过程中出现空指针的坑。[附java与Mysql驱动程序下载]
课程作业中的网站要实现后台,需要进行数据库连接。记录连接过程及掉进去的坑。
- 在Eclips中新建一个动态网站,输入项目名称。
File - New - Dynamic Web Project
1. 右击项目,新建一个jsp文件
1. 通过Workbench来新建数据库。首先打开workbench,进入默认的数据库连接中。
1. 在左侧nevigator导航栏中右击,新建一个Schema,输入数据库名称。我的数据库名称是program。
1. 双击建好的Schema,使其变黑,单击进入后选择table,右击新建表。我的表名称是new_table
1. 新建表时会发现没办法新建列,是需要点右上角的这两个上箭头。实在是太坑了。
1. 建好表之后,右击选择select rows,然后可以输入表的内容。 1. 将mysql的纯java数据库驱动程序“mysql-connector-java-5.1.45-bin.jar”复制到web文件夹的WEB-INF/lib目录下。(驱动程序附下载,见文末[^1])
1. 重点来了,通过Jsp来连接数据库,代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44<%@ 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> - 本来以为到这里应该结束了,但谁知道一直无法打印数据库的内容。报错显示在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命令行来执行如下语句。并注意把你的用户名和密码替换掉。1
2ALTER 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
【傻瓜教程】jsp连接MySQL数据库,及连接过程中出现空指针的坑。[附java与Mysql驱动程序下载]
https://abigail61.github.io/2024/11/23/原创-- 【傻瓜教程】jsp连接MySQL数据库,及连接过程中出现空指针的坑。[附java与Mysql驱动程序下载]/