Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQLServerException:Instrukcja nie zwróciła zestawu wyników podczas wykonywania SQL

Zaktualizowano SQL 2000 do SQL 2005 i przełączono na Microsoft SQL Server 2005 JDBC Driver w wersji 1.2. Otrzymałem błąd „Oświadczenie nie zwróciło wyniku” podczas wykonywania Insert, a następnie SELECT SCOPE_IDENTITY()”. Rozwiązałem problem za pomocą executeUpdate() i getGeneratedKeys zamiast executeQuery.Oto kod przed i po.

Uwaga:połączenie użyte w tym przykładzie to java.sql.connection, a nie com.microsoft.sqlserver.jdbc.SqlServerConnection.

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

Kod 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. Automatycznie generuj wartość hierarchii

  2. jak zwiększyć wartość w kolumnach liczb całkowitych o 1 w SQL?

  3. Wstaw ręcznie do tabeli za pomocą instrukcji SQL, ale klucz jest automatycznie zwiększany

  4. Menedżer raportów SSRS ustawia domyślny poziom powiększenia

  5. Procedura składowana z nazwą tabeli jako parametrem