Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQLServerException:Pernyataan tidak mengembalikan set hasil saat menjalankan SQL

Upgrade dari SQL 2000 ke SQL 2005 dan beralih ke Microsoft SQL Server 2005 JDBC Driver versi 1.2. Saya mendapatkan kesalahan "Pernyataan tidak mengembalikan hasil" saat menjalankan Sisipan diikuti oleh SELECT SCOPE_IDENTITY()".Saya memecahkan masalah menggunakan executeUpdate() dan getGeneratedKeys alih-alih executeQuery. Ini kode sebelum dan sesudahnya.

Catatan:Koneksi yang digunakan dalam contoh ini adalah java.sql.connection bukan com.microsoft.sqlserver.jdbc.SqlServerConnection.

kode 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);
}

Kode 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. Pemformatan Tanggal/Waktu Kustom di SQL Server

  2. Strategi SQL yang baik untuk pencocokan fuzzy kemungkinan duplikat menggunakan SQL Server 2005

  3. Bagaimana cara menyebarkan kolom grafik ASP.NET Column pada interval sumbu X yang relevan?

  4. Kesalahan CTE:Jenis tidak cocok antara jangkar dan bagian rekursif

  5. SQL Server:beberapa indeks untuk kinerja kolom yang sama