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

SQLServerException:Câu lệnh không trả về tập kết quả khi thực thi SQL

Đã nâng cấp từ SQL 2000 lên SQL 2005 và chuyển sang Microsoft SQL Server 2005 JDBC Driver phiên bản 1.2. Tôi gặp lỗi "Câu lệnh không trả về kết quả" khi thực thi Chèn theo sau là SELECT SCOPE_IDENTITY () ". Tôi đã giải quyết sự cố bằng cách sử dụng executeUpdate () và getGeneratedKeys thay vì thực thi. Đây là mã trước và sau.

Lưu ý:Kết nối được sử dụng trong ví dụ này là java.sql.connection không phải com.microsoft.sqlserver.jdbc.SqlServerConnection.

Mã SQL 2000

String  dbURL = "jdbc:sqlserver" + "://" + dbServer + ":" +
                 dbServerPort + ";SelectedMethod=cursor;databaseName="
                           + dbName + ";user=xxx;password=xxx";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
java.sql.Connection connection = DriverManager.getConnection(dbURL);
sql = "insert into Contact (name) values ('ABC'); SELECT SCOPE_IDENTITY()";
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
     long id = rs.getLong(1);
     System.out.println("Id=" + id);
}

Mã SQL 2005

String  dbURL = "jdbc:sqlserver" + "://" + dbServer + ":" +
                 dbServerPort + ";SelectedMethod=cursor;databaseName="
                           + dbName + ";user=xxx;password=xxx";

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
java.sql.Connection connection = DriverManager.getConnection(dbURL);
sql = "insert into Contact (name) values ('ABC'); SELECT SCOPE_IDENTITY()";
PreparedStatement ps = connection.prepareStatement(sql);
ps.executeUpdate();  // do not use execute() here otherwise you may get the error
                     // The statement must be executed before 
                     // any results can be obtained on the next
                     // getGeneratedKeys statement.

ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
     long id = rs.getLong(1);
     System.out.println("Id=" + id);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo cột được tính toán bằng cách sử dụng dữ liệu từ một bảng khác

  2. Phiên bản sao lưu SQL không tương thích với máy chủ này

  3. Tạo mã băm mật khẩu thành viên ASP.Net trong T-SQL thuần túy

  4. Lấy các cột cơ bản của một chế độ xem dựa trên tập hợp kết quả của nó

  5. Chuỗi phân tách T-SQL dựa trên dấu phân cách