先贴上可以成功运行的代码吧
import java
.sql
.Connection
;
import java
.sql
.ResultSet
;
import java
.sql
.Statement
;
import java
.sql
.DriverManager
;
import java
.sql
.SQLException
;
public class DBManage {
Connection conn
= null
;
Statement stmt
= null
;
ResultSet rs
= null
;
public DBManage() {}
public void getStatement() throws SQLException
{
try {
String cstr
= "jdbc:mysql://localhost:3306/new_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
Class
.forName("com.mysql.cj.jdbc.Driver");
conn
= DriverManager
.getConnection(cstr
,"root","root");
stmt
= conn
.createStatement();
} catch (Exception e
) {
System
.out
.println(e
.getMessage());
}
}
public ResultSet
query(String sql
) {
try {
ResultSet rs
= stmt
.executeQuery(sql
);
return rs
;
} catch (Exception e
) {
System
.out
.println("excuteQuery:"+e
.getMessage());
}
return null
;
}
public void excuteUpdate(String sql
) {
try {
stmt
.executeUpdate(sql
);
} catch (Exception e
) {
System
.out
.println("excuteUpdate:"+e
.getMessage());
}
}
public void close() {
try {
if(rs
!=null
) rs
.close();
if(stmt
!=null
) stmt
.close();
if(conn
!=null
) conn
.close();
} catch (Exception e
) {
System
.out
.println(e
.getMessage());
}
}
}
问题(出现先后顺序)
问题一:抛出异常excuteUpdate:null和excuteQuery:null
解决过程:在两个方法中加入System.out.println(sql),验证参数是否已经传入,发现运行stmt.executeUpdate(sql)和ResultSet rs = stmt.executeQuery(sql)这两句时抛出的异常,但是百度之后却没有发现能解决这道问题的方法,突然冒出个念头,为何作为连通数据库的getStatement方法没有抛出异常呢。。。果然问题出在这里,jsp中并没有初始化这个方法
解决方法:检查数据库是否连通,是否获得获得JDBC的Connection和Statement,我在jsp中加入jspBean.getStatement()(编代码还是要仔细的),好了,此时出现了问题二
问题二:抛出异常com.mysql.jdbc.Driver、excuteUpdate:null和excuteQuery:null
解决过程:行了,看到后面两个异常就知道与数据库的连接还没通,又出现新异常,不过这个异常以前经历过,很简单,导入连接MySQL的jar包的版本问题,我导入的是mysql-connector-java-8.0.16.jar,装在MySQL数据库驱动应该用com.mysql.cj.jdbc.Driver这个字符串,ok,竟然还报错,过分了
解决方法:根绝导入连接MySQL的jar包的版本,输入正确的字符串。mysql5用的驱动url是com.mysql.jdbc.Driver,mysql6以后用的是com.mysql.cj.jdbc.Driver。
问题三:抛出异常com.mysql.cj.jdbc.Driver、excuteUpdate:null和excuteQuery:null
解决过程:好嘛,还是数据库的驱动问题,这时候就怀疑到底他检测到这个class文件了吗,我就去jar包中找,确实在啊,也导入了
解决方法:重启IDE(我用的eclipse),我是java项目,如果是web项目的话,把mysql-connector-java-8.0.16.jar 导入到tomcat的lib文件夹,好吧,这一步我也做了,不做也可以
问题四:抛出异常he server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.、excuteUpdate:null和excuteQuery:null
解决过程:老问题,MySQL服务器时区问题
解决方法:在数据库的url中对时区进行规定就好
String cstr
= "jdbc:mysql://localhost:3306/new_db?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
感想
认真、仔细、有耐心,不放弃,不放弃,不放弃 因为第一次用JavaBean,以前都是用servlet,所以对javaBean在某些时刻觉得不好,其实没有好坏之分,根据需求来使用(来自老师的教导)
转载请注明原文地址: https://yun.8miu.com/read-134456.html