1

SQLSERVER2008で実行するJavaの簡単なクエリがあります。に達すると

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); 
   }
4

3 に答える 3

2

stmtどこか(コンストラクターまたはselect関数内)でインスタンス化する必要があります

フィールドを移動して関数stmtの変数にすることもできselectます。

    public ResultSet select(String sql)
    {
         Statement  stmt = link.createStatement();
         rs = stmt.executeQuery(sql);                        
         return rs; 
    }
于 2013-02-19T07:36:51.853 に答える
0

stmtオブジェクト参照はどのオブジェクトも指していないため、NPEを取得しています。試す..

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();
        }
于 2013-02-19T07:41:54.243 に答える
0

コードを機能させるために、selectメソッドは次のようになります。

    public ResultSet select(String sql)
    {
         stmt = link.createStatement();
         rs = stmt.executeQuery(sql);                        
         return rs; 
    }

リソース(ここでの接続など)をリークせずにjdbc操作を実行する方法に関する優れたチュートリアルを確認する必要があります。

于 2013-02-19T07:37:47.963 に答える