2016-04-07 25 views
1

私はこれを解決するために多くの時間をかけていますので、何か助けてくれてありがとうございます。 preparestatementでarrayを使用するには?私は、この例How to use an arraylist as a prepared statement parameterのようにそれを行うが、それは私にエラーを返し、私のコード:1つのPrepareStatement(sqlite)でArrayまたはList <>を使用する方法

 //initialize 
     ResultSet rs2; 
     connection2 = sqliteConnection.dbConnector(); 
     PreparedStatement statement2=connection2.prepareStatement("SELECT surname FROM users where id IN (?)"); 

     //like in the example linked, but it did not work: 
     Array array = connection2.createArrayOf("VARCHAR", new Object[]{"1", "2"}); 
     statement2.setArray(1, array); 
     rs2=statement2.executeQuery(); 

     //to keep data from resultset, it works fine 
     List<String> rsDATA = new ArrayList<String>(); 
     while(rs2.next()){ 
      rsDATA.add(rs2.getString("surname")); 
     } 
     for(int i = 0; i < rsDATA.size(); i++) { 
      System.out.println(rsDATA.get(i)); 
     } 
     connection.close(); 

をそれがエラーを返す:それは非常に重要である

Exception in thread "AWT-EventQueue-0" java.lang.AbstractMethodError: org.sqlite.SQLiteConnection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array; 
at lines: 

1)Array array = connection2.createArrayOf("VARCHAR", new Object[]{"1", "2"}); 
2(executeQuery(); 

私はこの問題を解決するために。リンクの質問への答えに示すよう

SELECT surname FROM users WHERE id IN (?) 

java.sql.Arrayオブジェクト:あなたのWHERE句でINを使用する必要があります..あなたに

答えて

0

をたくさんありがとうございました。

+0

私はあなたが私のことを知っているようにしますが、あなたが見ることができるように、それでもエラーを返します、どのように変更することができますか?私はそれで何ができますか? – arkani

+0

@arkaniあなたのsqlite JDBCドライバはおそらく時代遅れです。http://stackoverflow.com/questions/16408591/java-lang-abstractmethodorror-org-sqlite-conn-createarrayof-error-while-callingを参照してください。しかし、その答えに示されているように、sqliteは 'java.sql.Array'実装を持たないかもしれません。 – wero

+0

それは本当に、sqliteはjava.sql.Arrayの実装を持っていません。それで、それを行う別の方法がありますか?それは大きなプロジェクトです、私はjdbcを変更することはできません.. ステートメントは配列の問題をスキップするいくつかのループで行うことができますか? – arkani

関連する問題