gpt4 book ai didi

java - 使用 DSN 连接 SQL SEVER 时只允许有一个结果集实例

转载 作者:行者123 更新时间:2023-12-01 14:42:54 26 4
gpt4 key购买 nike

我收到以下错误

[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 连接中工作正常

最佳答案

您同时迭代两个结果集:

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

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

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

或者,如果您使用的是 SQL Server 2005,您可能需要尝试启用 SQL Server 中名为“Multiple Active Result Sets”的功能。

关于java - 使用 DSN 连接 SQL SEVER 时只允许有一个结果集实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com