Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thực thi sp_msforeachdb trong ứng dụng Java

Nếu một câu lệnh có thể trả về không hoặc nhiều kết quả, bạn không nên sử dụng executeQuery , nhưng execute() thay vào đó, phương thức này trả về một boolean cho biết loại kết quả đầu tiên:

  • true :kết quả là một ResultSet
  • false :kết quả là số lần cập nhật

Nếu kết quả là true , sau đó bạn sử dụng getResultSet() để truy xuất ResultSet , nếu không thì getUpdateCount() để truy xuất số lượng cập nhật. Nếu số bản cập nhật là -1 nó có nghĩa là không có kết quả nào nữa. Lưu ý rằng số lượng cập nhật cũng sẽ là -1 khi kết quả hiện tại là ResultSet . Bạn cũng nên biết rằng getResultSet() sẽ trả về null nếu không còn kết quả nào nữa hoặc nếu kết quả là số lần cập nhật.

Bây giờ nếu bạn muốn lấy thêm kết quả, bạn gọi getMoreResults() (hoặc anh trai của nó chấp nhận một int tham số). Giá trị trả về của boolean có cùng ý nghĩa với nghĩa của execute() , vì vậy false không có nghĩa là không có thêm kết quả!

Chỉ không có kết quả nào nữa nếu getMoreResults() trả về false và getUpdateCount() trả về -1 (cũng được ghi lại trong Javadoc)

Về cơ bản, điều này có nghĩa là nếu bạn muốn xử lý chính xác tất cả các kết quả, bạn cần thực hiện một số việc như sau:

boolean result = stmt.execute(...);
while(true)
    if (result) {
        ResultSet rs = stmt.getResultSet();
        // Do something with resultset ...
    } else {
        int updateCount = stmt.getUpdateCount();
        if (updateCount == -1) {
            // no more results
            break;
        }
        // Do something with update count ...
    }
    result = stmt.getMoreResults();
}

LƯU Ý:Một phần của câu trả lời này dựa trên câu trả lời của tôi cho Java SQL:Statement.hasResultSet ()?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL hàng đến cột

  2. Làm cách nào để thực hiện chèn và trả lại danh tính đã chèn bằng Dapper?

  3. Bảng Tally để chèn các ngày còn thiếu giữa hai ngày? SQL

  4. Chèn trình kích hoạt Cập nhật cách xác định xem chèn hoặc cập nhật

  5. Cách tạo Ràng buộc khóa ngoại bằng BẬT XÓA CASCADE trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 80