0

我收到以下错误

[Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt

我的代码

private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static final String URL = "jdbc:odbc:sql2008";
private String[] entity = {"TABLE","VIEW"};
private ResultSet tables,columns,resultSet;

public void getData() throws SQLException, ClassNotFoundException{
    Class.forName(DRIVER);
    Connection  connection=DriverManager.getConnection(URL,USERNAME,PASSWORD);
    DatabaseMetaData data = connection.getMetaData();
     resultSet =  data.getCatalogs();

     while (resultSet.next()) {
         String dbName = resultSet.getString("TABLE_CAT");
        if(dbName.toString().equals("db")){
            tables=data.getTables(dbName, "%", "%", entity);
            while (tables.next()) {
                           System.out.println(tables.getString("TABLE_NAME"));
            }
        }
    }
}

URL 是 DSN 连接(使用 dsn 名称的连接),我在尝试获取再次是 ResultSet 的表时遇到此错误,但它在直接(使用地址)的无 DSN 连接中工作正常

4

1 回答 1

1

您同时迭代两个结果集:

  1. while (resultSet.next()) {
  2. while (tables.next()) {

根据错误消息,这是不允许的。

您可以通过将第一次迭代的结果放入 aList<String> databaseNames然后迭代该列表以列出表来修复它。

或者,如果您使用的是 SQL Server 2005,您可能想尝试在 SQL Server 中启用一项称为“多个活动结果集”的功能。

于 2013-04-02T12:19:46.503 回答