0

这是我的功能:

private static void checkDatabase(String dbName, String password) {
    try{
        Connection con=DriverManager.getConnection(
                "jdbc:sqlserver://localhost;database="+dbName+ ";user=SA;password=" +password);
        Statement stmt=con.createStatement();
        ResultSet rs=stmt.executeQuery("DBCC CHECKDB;");
        while(rs.next()){
          System.out.println( //TODO );
        }
            con.close();
    }catch(Exception e){ System.out.println(e);}
}
  1. 我想使用 DBCC CHECKDB 检查所有数据库但收到此错误:

     com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set. 
    

    为什么 DBCC CHECK DB 不能与 executeQuery() 一起使用,我该如何解决?

  2. 因此,如果我已经从 stmt.executeQuery() 获得了 ResultSet,我如何将这个结果读取为行或字符串?我想看看有多少错误。谢谢你。

4

2 回答 2

0

使用布尔 rs = stmt.execute("DBCC CHECKDB;"); 反而。

某些 SQL 语句不返回结果集。

于 2021-11-17T20:47:59.510 回答
0

DBCC CHECKDB默认情况下,将结果作为消息而不是结果集返回。指定TABLERESULTS选项 ( DBCC CHECKDB WITH TABLERESULTS;),以便结果以行而不是消息的形式返回。

或者,您可以使用该execute方法代替executeQuery并使用以下方法获取返回的消息getWarnings

stmt.execute("DBCC CHECKDB;");
SQLWarning w = stmt.getWarnings();
while(w != null) {
    System.out.println(w.getMessage());
    w = w.getNextWarning();
}
               
于 2020-10-23T11:55:00.043 回答