这个问题在这里已经有答案了:
什么是nullpointerexception,如何修复它(12个答案)
两年前关门了。
我在尝试从sql server获取数据时遇到了一个问题,sql server在prepared语句中给出了一个空点异常。我肯定这是一个很难回答的问题,但请帮我:)
这就是我要调用的方法
public void notification(){
int MachCode = 1721;
try{
String sql ="Select TimeOn from PRODUCTIONS_MONITOR where MachCode='"+MachCode+"'";
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next()){
arrCount.add(rs.getInt(1));
}
for(int i=0;i<arrCount.size();i++){
Count = Count + arrCount.get(i);
}
if(Count % 10 == 0){
System.out.println("Time = " + Count);
}
}catch(SQLException e){
e.printStackTrace();
}
}
这是我的数据库连接
public static Connection ConnecrDb() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://10.228.59.2:1433;databaseName=dbNautilus;user=SA;password=KreedaIntimo@2017;");
System.out.println("Connected to database !");
} catch (SQLException sqle) {
System.out.println("Sql Exception :" + sqle.getMessage());
} catch (ClassNotFoundException e) {
System.out.println("Class Not Found Exception :" + e.getMessage());
}
return null;
}
1条答案
按热度按时间7vhp5slm1#
你的
ConnecrDb()
方法指定新的Connection
对象到名为con
,然后再也不用了。然后该方法返回
null
.您没有演示如何调用方法,但这并不重要,因为
con
使用的字段notification()
方法是未赋值的(因此null
),或分配null
返回值来自ConnecrDb()
,确实如此null
不管怎样。既然如此,为什么你会混淆价值是什么
null
并导致NullPointerException
?关于代码的其他一般性评论:
如果
MachCode
是整数,那么为什么在sql中引用它,即为什么where MachCode='"+MachCode+"'";
而不是where MachCode="+MachCode;
?如果你用的是
PreparedStatement
,为什么不用?
要使用的参数标记?在使用jdbc时,应该使用try-with-resources。
java命名约定是变量名以小写字母开头。
您的代码应该是: