Java NullPointerException取决于使用createStatement的设备

Java NullPointerException取决于使用createStatement的设备,java,android,sql-server,nullpointerexception,Java,Android,Sql Server,Nullpointerexception,我想用Android连接到SQL Server 这是我的代码: Class.forName("net.sourceforge.jtds.jdbc.Driver"); conn = DriverManager.getConnection(db_connect_string, db_userid, db_password); try{ Statement ps = conn.createStatement(); ResultSet rs = ps.executeQuery ("select * f

我想用Android连接到SQL Server

这是我的代码:

Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);

try{
Statement ps = conn.createStatement();
ResultSet rs = ps.executeQuery ("select * from cliente");
.....
}
catch (SQLException e) {
e.printStackTrace();
}
如果我在三星Galaxy Ace中运行该应用程序,一切正常,但如果我想在其他设备中运行该应用程序,则出现以下错误:

java.lang.NullPointerException
这个错误是一致的:

Statement ps = conn.createStatement();
我不知道为什么这取决于设备运行与否

Statement ps = db.conn.createStatement(); 
这应该是

Statement ps = conn.createStatement();
这里db的值是
null
i guss,因此您将从这行代码中获得
NullPointerException

如果有任何问题,请告诉我

编辑:

如果您的代码中不存在db,请将Sysout设置为:

conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
Sysout.out.Println("value of conn is "+conn);
并检查conn的值。根据我的理解,这是空的

供参考:


这两行代码必须放在try/catch块中。

对不起,“db.”不在代码中,我不知道为什么在这里。问题是为什么在某些设备中它可以工作,而在另一个设备中它不能。如果db不在代码中,并且变量conn不在db对象中,那么在运行时您将遇到编译时问题,而不是NullPointerexception。我已经更改了答案,db。不应该在这里,所有内容都在同一个类中,就像现在的代码一样。对不起,行在try/catch块中。我试图简化代码。你是否通过给出一个sysout来检查conn的值?
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);