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
を使用する必要があります..あなたに
私はあなたが私のことを知っているようにしますが、あなたが見ることができるように、それでもエラーを返します、どのように変更することができますか?私はそれで何ができますか? – arkani
@arkaniあなたのsqlite JDBCドライバはおそらく時代遅れです。http://stackoverflow.com/questions/16408591/java-lang-abstractmethodorror-org-sqlite-conn-createarrayof-error-while-callingを参照してください。しかし、その答えに示されているように、sqliteは 'java.sql.Array'実装を持たないかもしれません。 – wero
それは本当に、sqliteはjava.sql.Arrayの実装を持っていません。それで、それを行う別の方法がありますか?それは大きなプロジェクトです、私はjdbcを変更することはできません.. ステートメントは配列の問題をスキップするいくつかのループで行うことができますか? – arkani