2014-12-23 85 views
1

您好我只是從SQL Server和stroing它選擇數據在結果集中。 我收到以下錯誤。JDBC ERROR:AbstractMethodError:com.microsoft.sqlserver.jdbc.SQLServerConnection.createArrayOf(Ljava /郎/字符串; [Ljava /郎/對象;)Ljava/SQL /陣列

**JDBC ERROR : AbstractMethodError: com.microsoft.sqlserver.jdbc.SQLServerConnection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array** 

與此線以下

java.sql.Array sqlarray = sqlcon.createArrayOf(null, rowValues.toArray()); 

爲什麼會出現這個問題,我應該通過什麼確切的參數createArrayOf()。請爲這方面的幫助下面的問題我不知道這個問題

這是完整的代碼

public void getDatafromsql(ArrayList rowValues) throws SQLException,ClassNotFoundException 
    { 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    System.out.println("SQL Server Start Connecting "); 
    Connection sqlcon = DriverManager 
      .getConnection(s_url, s_username, s_password); 
    System.out.println("Sql server Connection valid"); 
    System.out.println(rowValues); 
    PreparedStatement s1 = sqlcon.prepareStatement("SELECT TOP 6 myid,document,name FROM table1 where DATEMODIFIED between ? and ? and myid in (?)"); 
    s1.setTimestamp(1,V_DOC_LAST_REFRESH_TIMESTAMP); 
    s1.setTimestamp(2,V_DOC_CURRENT_REFRESH_TIMESTAMP); 
    //Below line throwing error 
    java.sql.Array sqlarray = sqlcon.createArrayOf(null, rowValues.toArray()); 
    s1.setArray(3, sqlarray); 
    sql_rs = s1.executeQuery(); 
    setdataOracle(sql_rs); 
    System.out.println("SQL Server Storage Completed "); 
    sqlcon.close(); 
    } 
+2

您正在使用哪種JDBC驅動程序版本。 AbstractMethodError指示未實現的方法 – azraelAT

+0

SQL Server是否支持數組? –

回答

0

SQL Server JDBC驅動程序不支持該方法:

public java.sql.Array createArrayOf(String typeName, 

     Object[] elements) throws SQLException { 

    // Not implemented 

    throw new SQLFeatureNotSupportedException(SQLServerException.getErrString("R_notSupported")); 

} 

https://github.com/Microsoft/mssql-jdbc/blob/master/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java

而是使用Table Valued Parameters,或通過將數據作爲XMLJSON,或CSV並解析它在服務器上。

相關問題