2013-04-02 15 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

相关问题