嗨,我只是从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,或将数据作为XML,JSON或CSV传递并在服务器上进行解析。