sql >> Database teknologi >  >> RDS >> Sqlserver

SQLServerException:Sætningen returnerede ikke et resultatsæt, da SQL blev udført

Opgraderet fra SQL 2000 til SQL 2005 og skiftet til Microsoft SQL Server 2005 JDBC Driver version 1.2. Jeg fik fejlen "Sætningen returnerede ikke et resultat", da jeg udførte en Insert efterfulgt af SELECT SCOPE_IDENTITY()". Jeg løste problemet ved at bruge executeUpdate() og getGeneratedKeys i stedet for executeQuery. Her er før- og efterkoden.

Bemærk:Den forbindelse, der bruges i dette eksempel, er java.sql.connection, ikke com.microsoft.sqlserver.jdbc.SqlServerConnection.

SQL 2000-kode

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

SQL 2005-kode

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. liferay migrere data fra hsql til mysql

  2. Indsættelse af værdier af array i MYSQL

  3. MySQL rækkefølge efter samme rækkefølge af værdier i IN-klausulen

  4. PHP:PDO-forespørgsel returnerer ingen resultater, men den samme forespørgsel returnerer 4 resultater i phpmyadmin?