Java 运行executeQuery(sql)时出现NullPointerException
我在Java中有一个简单的查询,可以在sqlserver2008中运行。当它达到Java 运行executeQuery(sql)时出现NullPointerException,java,sql-server-2008,nullpointerexception,jtds,executequery,Java,Sql Server 2008,Nullpointerexception,Jtds,Executequery,我在Java中有一个简单的查询,可以在sqlserver2008中运行。当它达到 rs=stmt.executeQuery(sql)它给我java.lang.NullPointerException 1-我使用jtds驱动程序将代码连接到数据库 2-当我直接在数据库中执行查询时,它可以工作 3-为了使代码简短易懂,我省略了Try-Catch public class DataBases { private Connection link; p
rs=stmt.executeQuery(sql)代码>它给我java.lang.NullPointerException
1-我使用jtds驱动程序将代码连接到数据库
2-当我直接在数据库中执行查询时,它可以工作
3-为了使代码简短易懂,我省略了Try-Catch
public class DataBases
{
private Connection link;
private java.sql.Statement stmt;
public ResultSet rs;
public DataBases()
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String connectionUrl = "jdbc:jtds:sqlserver://localhost:1433;databaseName=DB;integratedSecurity=true";
Connection link = DriverManager.getConnection(connectionUrl);
}
public ResultSet select(String sql)
{
rs = stmt.executeQuery(sql);
return rs;
}
}
public static void main(String[] args)
{
DataBases s=new DataBases();
String sql="SELECT * FROM [DB].[dbo].[quantities] ";
ResultSet rs=s.select(sql);
}
您需要在某个地方实例化stmt
(在构造函数中或select
函数中)
您还可以将stmt
字段移动为select
函数的变量
public ResultSet select(String sql)
{
Statement stmt = link.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}
您的select方法应如下所示,以使代码正常工作:
public ResultSet select(String sql)
{
stmt = link.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}
您需要看一本关于如何在不泄漏资源(如此处的连接)的情况下执行jdbc操作的好教程。因为stmt对象引用没有指向任何您正在获得NPE的对象。
试试
在哪里实例化stmt?
public DataBases()
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String connectionUrl = "jdbc:jtds:sqlserver://localhost:1433;databaseName=DB;integratedSecurity=true";
Connection link = DriverManager.getConnection(connectionUrl);
Statement stmt = link.createStatement();
}