2013-04-02 23 views
0
SQL SEVER

我得到波紋錯誤只有結果集一個實例被允許同時連接使用DSN

[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")); 
      } 
     } 
    } 
} 

網址是DSN連接(使用connction DSN名稱)和 我在嘗試獲取表時,出現此錯誤,這又是ResultSet ,但其工作正常,無需直接使用DSN連接(使用地址)

回答

1

你同時遍歷兩個結果:

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

根據錯誤信息,這是不允許的。

您可以通過將第一次迭代的結果放在List<String> databaseNames中,然後遍歷該列表來列出表格來修復它。

或者,如果您使用的是SQL Server 2005,則可能需要嘗試在SQL Server中啓用名爲「Multiple Active Result Sets」的功能。

+0

但上面的代碼工作正常時,我的連接是無DSN – Pravin

相關問題