嗨,我只是从SQL SERVER中选择数据并将其存储在结果集中。
我正在错误以下。

**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();
    }

最佳答案

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,或将数据作为XMLJSONCSV传递并在服务器上进行解析。

09-11 18:05
查看更多