在Java中查询数据库之后,返回数组(Return an array after querying

2019-09-16 19:23发布

我要查询MSSQL数据库,我希望查询返回一个数组或ArrayList中的结果。

我有一个这样的代码现在,但它给出了一个错误。 我有一个到数据库的连接,这样是没有问题的。

public ArrayList<Array> queryResult(String q) throws SQLException {

   ArrayList<Array> array = new ArrayList<>();
   Statement statement = this.getConnection().createStatement();
   ResultSet rs = statement.executeQuery(q);

   while(rs.next()) {

      Array n = rs.getArray(rs.getRow());
      System.out.println(n);
      array.add(n);

   }
   return array;
}

我得到以下错误

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: This operation is not supported.
      at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
      at com.microsoft.sqlserver.jdbc.SQLServerResultSet.NotImplemented(SQLServerResultSet.java:750)
      at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getArray(SQLServerResultSet.java:2625)
      at server.Database.queryResult(Database.java:52)
      at server.Server.listen(Server.java:57)
      at server.Server.run(Server.java:34) at
      server.Server.<init>(Server.java:28) at
      server.Server.main(Server.java:94) Java Result: 1

Answer 1:

getArray()返回当前行的作为阵列的特定列的值。 请参阅本- http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getArray%28int%29

如果你想获得行值的数组,那么你必须写代码,像这样的一些东西。

while (rs.next()){
     java.util.ArrayList alRowData = new java.util.ArrayList();
     java.sql.ResultSetMetaData rsmd = rs.getMetaData();
     int numberOfColumns = rsmd.getColumnCount();
     for(int columnIndex = 1; columnIndex <= numberOfColumns; columnIndex ++){
          alRowData.add(rs.getObject(columnIndex));
     }
     System.out.println(alRowData);
}


Answer 2:

你的异常跟踪显示:

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: This operation is not supported.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.NotImplemented(SQLServerResultSet.java:750)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getArray(SQLServerResultSet.java:2625)

好像你用,没有落实的SQLDriver getArray(int)方法,因此引发此异常。

您可能需要最新的驱动程序,支持或替代解决方案来解决这个问题。

编辑
如果你真的正在寻找获取当前RowRecordResultSet ,然后你调用getRow()getArray(..)将无法工作,据我所知这种实现是不可用的。



文章来源: Return an array after querying database in Java