java操作Sql出现java.lang.NullPointerException错误

前进的猿 2015-04-24 02:02:52
//我编写了一个java操作sql数据库的类,如下:
package classsource;

import java.sql.*;

public class Database {
public static Connection cn;
public static Statement st;
public static ResultSet rs;

public static boolean joinDB() {
boolean joinFlag;
try {
joinFlag = true;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
cn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=EmployeeInformationMS","sa","yourpassword");

cn.setCatalog("EmployeeInformationMS");
System.out.println("数据库连接成功");
st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
return joinFlag;

} catch (SQLException sqlEx) {
System.out.println(sqlEx.getMessage());

joinFlag = false;
return joinFlag;

} catch (ClassNotFoundException notfoundEX) {
System.out.println(notfoundEX.getMessage());

joinFlag = false;
return joinFlag;
}
}

public static boolean executeSQL(String sqlString) {
boolean executeFlag;
try {
st.execute(sqlString);
executeFlag = true;
} catch (Exception e) {
executeFlag = false;
System.out.println("sql exception:" + e.getMessage());
}
return executeFlag;
}


public static boolean query(String sqlString) {

try {
rs = null;
//System.out.println(sqlString);
rs = st.executeQuery(sqlString);
} catch (Exception Ex) {
System.out.println("sql exception:" + Ex);
return false;
}
return true;
}
}
但是运行的时候出现如下错误:sql Exception: java.lang.NullPointerException
求大神指教
...全文
1886 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
missMeyo 2015-04-27
  • 打赏
  • 举报
回复
为啥不打印下Ex.printStack呢,空指针一般是空值调用了方法和属性。
zhaol7758258 2015-04-26
  • 打赏
  • 举报
回复
也不打印一下traceback?
finemi 2015-04-25
  • 打赏
  • 举报
回复
st变量貌似是空的,你检查下是不是其他方法里面已经关闭了这个st
前进的猿 2015-04-24
  • 打赏
  • 举报
回复
在myeclipse上连接数据库的时候显示的是已经连接,而且驱动和URL 都正确的,就是程序运行的时候会出现这么个异常,会不会是其中有对象调用的时候还是空值?
A-wolf 2015-04-24
  • 打赏
  • 举报
回复
数据库没连接成功 可能存在的原因是 你驱动称写错了 检查一下
前进的猿 2015-04-24
  • 打赏
  • 举报
回复
平时运行的时候console里面的提示信息是这样的,刚好没有执行system。out。println("数据库连接成功");这句代码
前进的猿 2015-04-24
  • 打赏
  • 举报
回复
好像是运行的时候这个rs取值的时候出现了异常
@cement 2015-04-24
  • 打赏
  • 举报
回复
Exception很重要。
「已注销」 2015-04-24
  • 打赏
  • 举报
回复
引用 3 楼 qq_27382089 的回复:
1.这是查询时候的代码: //连接数据库 Database.joinDB(); //为表格初使化数据------------------------------------------------------------ String csf="select * from DepartmentInformation"; if(Database.query(csf)){ try{ while(Database.rs.next()){ String num = ("" + Database.rs.getInt("D_Number")); System.out.println(num); String name = Database.rs.getString("D_Name"); System.out.println(name); String count = Database.rs.getString("D_Count"); System.out.println(count); Vector v=new Vector(); v.add(num); v.add(name); v.add(count); dtm.addRow(v); } } catch(Exception ecsf){ System.out.println("初使化表格数据出错!");} } 2。这是输入数据的代码 //连接数据库------- Database.joinDB(); //初始化窗体数据------------------------------------------------------- String sqlc="select * from DepartmentInformation"; try{ if(Database.query(sqlc)){ //System.out.println("ok"); Database.rs.next(); String number=("" + Database.rs.getInt("D_Number")); //System.out.println(number); String name=Database.rs.getString("D_Name"); String count=Database.rs.getString("D_Count"); tnumber.setText(number); tname.setText(name); tcount.setText(count); } } catch(Exception e){ System.out.println(e); } 十分感谢大神的指教
把你数据库操作类里面catch(Exception e){}里面加上e.printStackTrace();,然后操作一遍,把控制台里报的错误全都贴出来。 我建议是你加个断点一步一步调,看哪一步操作出问题了
前进的猿 2015-04-24
  • 打赏
  • 举报
回复
没有具体报哪一行,我用的是myeclipse编程,调试的时候出现这么个情况
前进的猿 2015-04-24
  • 打赏
  • 举报
回复
1.这是查询时候的代码: //连接数据库 Database.joinDB(); //为表格初使化数据------------------------------------------------------------ String csf="select * from DepartmentInformation"; if(Database.query(csf)){ try{ while(Database.rs.next()){ String num = ("" + Database.rs.getInt("D_Number")); System.out.println(num); String name = Database.rs.getString("D_Name"); System.out.println(name); String count = Database.rs.getString("D_Count"); System.out.println(count); Vector v=new Vector(); v.add(num); v.add(name); v.add(count); dtm.addRow(v); } } catch(Exception ecsf){ System.out.println("初使化表格数据出错!");} } 2。这是输入数据的代码 //连接数据库------- Database.joinDB(); //初始化窗体数据------------------------------------------------------- String sqlc="select * from DepartmentInformation"; try{ if(Database.query(sqlc)){ //System.out.println("ok"); Database.rs.next(); String number=("" + Database.rs.getInt("D_Number")); //System.out.println(number); String name=Database.rs.getString("D_Name"); String count=Database.rs.getString("D_Count"); tnumber.setText(number); tname.setText(name); tcount.setText(count); } } catch(Exception e){ System.out.println(e); } 十分感谢大神的指教
「已注销」 2015-04-24
  • 打赏
  • 举报
回复
没有日志吗,你调用的时候的代码贴一下吧
nicholasbobo 2015-04-24
  • 打赏
  • 举报
回复
那是哪一行报的错呢

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧