2011-12-16 54 views
0

Sybase ASEデータベースに接続しようとしています。データを取得すると、rs = stmt.executeQuery(queryData);にNullPointerExceptionが発生します。
dbVisualizerで同じクエリを試しましたが、すべて正常です。rs = stmt.executeQuery(queryData)を実行するとNullPointerExceptionが発生する

static void retrieveData() { 
    try { 
     String queryData="SELECT * FROM med WHERE item_id like 'A00001'"; 
     // process the results. 
     rs = stmt.executeQuery(queryData); 
     while (rs.next()) { 
      String s = rs.getString("item_naam"); 
      String n = rs.getString("item_mnemo"); 
      System.out.println(s + " " + n); 
     } 
    }catch(SQLException ex) { 
     System.err.println("RetrieveData: " + ex.getMessage()+ " sqlstate = " + 
       ex.getSQLState()); 
     System.exit(1); 
    } 
+0

はどこにSTMTを初期化しない...

Statement s = c.createStatement(); rs = s.executeQuery(queryData); 

をしてprevioulsyが初期化され、RS cは前に定義されたことを覚えておいてください:

yoが行うことができますか? – hovanessyan

答えて

2

stmtが初期化されていないと思われます。少なくとも、変数stmtを定義していないと、開発環境にエラーが表示されることがあります。

変数を初期化しなかったためにNullpointerExceptionsがたくさんあります。あなたが定義してから、初期化するのを忘れてしまいました。良いアドバイスです(メモリの問題はなく、変数を初期化するのを忘れてしまいます。両方のことを同時に行うことができます。

+0

ありがとう、私は以下のようにしました: 'try { \t \t con = DriverManager.getConnection(url、user、password); \t \t stmt = con.createStatement(); \t \t System.out.println( "接続が確立されました"); \t} catch(SQLException ex){ \t \t System.err.println( "データベース接続:" + ex.getMessage()+ "SQLState:" + ex.getSQLState()); \t} ' – itro

+0

このコードがあなたを助けることを知って嬉しいです! –

4

stmtオブジェクトが初期化されていない可能性があります。

+0

私は以下のようにクラスの先頭にいました: 'public class BcfiConnection { static Connection con; staticステートメントstmt; 静的ResultSet rs; ' – itro

+0

これは宣言であり、初期化ではありません。接続を作成し、それを使用して文を作成する必要があります。 – pablochan

関連する問題