IDEA连接MySQL数据库报错
如果想实现这样的功能:创建一个.jsp页面,并在该页面中使用纯JAVA数据库驱动程序连接数据库,并查询数据表(如firsttable)中的数据。
数据库如图:
最初写的代码是这样的:
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>访问MySQL数据库</title>
</head>
<body>
<%
Connection con=null;
Statement st=null;
ResultSet rs=null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
}catch (ClassNotFoundException e)
{
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/huan?characterEncoding=utf-8","root","12345");
st=con.createStatement();
System.out.println(con);
rs=st.executeQuery("select * from firsttable");
while (rs.next())
{
out.print(rs.getString("id")+" ");
out.print(rs.getString("name")+" ");
out.print(rs.getString("address")+" ");
out.println();
out.print("<br>");
}
}
catch (SQLException e)
{
e.printStackTrace();;
}
finally {
rs.close();
st.close();
con.close();
}
%>
</body>
</html>
然后我发现电脑就会报很多的问题,如下图:
我改了好久这个,网上很多大佬说是时区问题,也改了很多次,试了很多次别的方法…最终,是要在数据库建立连接的DriverManager.getConnection()语句的数据库名?后面加上“useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&”
正确代码:
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>访问MySQL数据库</title>
</head>
<body>
<%
Connection con=null;
Statement st=null;
ResultSet rs=null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
}catch (ClassNotFoundException e)
{
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/huan?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=utf-8","root","12345");
st=con.createStatement();
System.out.println(con);
rs=st.executeQuery("select * from firsttable");
while (rs.next())
{
out.print(rs.getString("id")+" ");
out.print(rs.getString("name")+" ");
out.print(rs.getString("address")+" ");
out.println();
out.print("<br>");
}
}
catch (SQLException e)
{
e.printStackTrace();;
}
finally {
rs.close();
st.close();
con.close();
}
%>
</body>
</html>
运行截图: