2017-01-25 8 views
0

私はMSSQL SERVERを使用してJava 1.7プロジェクトを処理します。Java追加SQL Serverの準備文にIDの配列を追加

私は、クエリにIDの配列を追加しよう:

List<String> ids = new ArrayList<String>(3); 
ids.add("32123"); 
ids.add("4455"); 
ids.add("1258"); 
String sqlStatement = "SELECT * FROM databaseName 
WHERE id IN(?)"; 
Connection c = null; 
PreparedStatement s = null; 
ResultSet rs = null; 
try { 
    Object[] objArr = new Object[ids.size()]; 
    objArr = ids.toArray(objArr); 
    c = bbbDataSource.getConnection(); 
    s = c.prepareStatement(sqlStatement); 
    Array array = c.createArrayOf("VARCHAR", objArr); 
    s.setArray(1, array); 
    rs = s.executeQuery(); 
} 

私が手にエラーがこれです:私は間違っ

Exception thrown bean: java.lang.abstractMethodError: net.sourceforge.jtds.jdbcx.proxy.ConnectionProxy.createArrayOf(LJava/lang/String:[LJava/lang/Object:)LJava/lang/Array; 

何をしているのですか?

+0

何らかの理由のOscarRyzの答えは? –

+0

String []で同じエラーメッセージが表示されます。 –

+4

'java.lang.AbstractMethodError'はすべてを言います。' createArrayOf(...) 'は抽象的です。すなわち、' net.sourceforge.jtds.jdbcx.proxy 'で実装されていません。 ConnectionProxy'を呼び出します。これはバージョンの競合を暗示するかもしれません(クラスパスには古いバージョンのjtdsが含まれているかもしれません)か、アプリケーションの一部だけがコンパイルされています。 – Thomas

答えて

0

基本的に、jTDSライブラリでcreateArrayOfメソッドを使用することはできません。別のデータベースドライバライブラリを使用する必要があります。

証拠(net.sourceforge.jtds.jdbc.JtdsConnectionから引き出さコード):SQL Serverを使用しているので、

/* (non-Javadoc) 
* @see java.sql.Connection#createArrayOf(java.lang.String, java.lang.Object[]) 
*/ 
public Array createArrayOf(String typeName, Object[] elements) throws SQLException { 
    // TODO Auto-generated method stub 
    throw new AbstractMethodError(); 
} 

あなたはhttps://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-serverのようなものを使用することができます。

別のオプションを使用すると、[] ``の代わりに文字列[] ``のオブジェクトを作成しましたPreparedStatement with list of parameters in a IN clause

+0

は、バージョン1.3.1のnet.sourceforge.jtdsを使用しています – TimeDelta

関連する問題