呃 本次debug历经三个小时 五点半开始 八点半结束 成功干扰了我吃晚饭的时间
大概过了半个小时 把代码码完 配置配好 开始调试
首先是无法连接到localhost:8080 稍稍一查发现是被占用了
更改了一个HTTP Post即可
然后是第二个配置问题 配置到java ee项目 到 Tomcat上
一开始跟着书上做 因为书上是MyEclipse 而我是用的编译环境则是idea 在配置上有许些不同
最关键的是就是添加jdbc的包到lib中
我跟着书上 在web包下新建lib后直接在本机拖动jdbc的java文件到这个文件夹中 直接导致了我认为了这一步算是成功配置jdbc文件
不过确实在我的代码中有个bug导致报java.lang.NullPointerException
并且是在 ResultSet中报的 所以我一直没有想到是建立连接那一步错了
接下讲 我怎么解决的
我在SqlSrvDBConn类中写了一个主函数 来验证究竟是哪一步出了问题
SqlSrvDBConn sqlSrvDBConn = new SqlSrvDBConn();
String sql = "select * from usertable";
sqlSrvDBConn.executeQuery(sql);
ResultSet rs = sqlSrvDBConn.rs;
if(sqlSrvDBConn.conn==null) {
System.out.println("Conn is null");
}
if(rs==null){
System.out.println("Error");
return ;
}
try{
while(rs.next()){
System.out.println(rs.getString("username"));
}
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
在这里成功出现我数据库中的数据之后 把可能NullPointerException的可能向上推
是否是我密码用户名出错了或者库名输错了 同样在检查过三遍之后 没有问题
这次我依然没有把错误的可能放在 Class.forName(“com.mysql.jdbc.Driver”)上
因为我觉得如果我本地跑得通的 tomcat也应该是跑得通的
所以我检查前端的信息传递和验证页上去了 同样在检查过三遍之后 没有问题
那么所有问题都解决之后 最不可能出现问题的地方 就是 问题的所在
我在每次try后面catch异常中增加一步输出操作
//在构造方法中创建数据库连接
public SqlSrvDBConn(){
stmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e){
System.out.println("Class is error");
}
try{
String uri = "jdbc:mysql://localhost:3306/test?useSSL=true";
String user = "host";
String password = "HanDong85";
conn = DriverManager.getConnection(uri,user,password);
}catch(Exception e){
System.out.println("Connection happened error");
e.printStackTrace();
}
}
public ResultSet executeQuery(String sql){
try{
// stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}catch(SQLException e){
System.out.println("Data.executeQuery:"+e.getMessage());
}
return rs;
}
//关闭 对象
public void closeStmt(){
try{
stmt.close();
}catch(SQLException e){
System.out.println("38行出错啦!!!!");
System.out.println("Data.executeQuery:"+e.getMessage());
}
}
public void closeConn(){
try{
conn.close();
}catch(SQLException e){
System.out.println("Data.executeQuery:"+e.getMessage());
}
}
然后运行
呃 看来果然是包在java ee导入tomcat的时候 出了问题
然后想了一下 应该怎么 查了半个小时资料 找到了解决方法
到了这里就成功解决了这个问题 然后验证一下