SQLServerException: Die Aussage, nicht mit einem ResultSet zurückgegeben, wenn die Ausführung von SQL
Ich bin mit mit dem sqljdbc4.jar (sqljdbc_2.0) version.
Ich bin das ausführen einer insert - + a wählen Sie zurück, um die Identität, so wie diese:
BEGIN
INSERT INTO DateRangeOptions (Description,Code)
VALUES ('dateRange.quickPick.option.all','ALL');
SELECT SCOPE_IDENTITY()
END
und ich bekomme:
com.microsoft.sqlserver.jdbc.SQLServerException: Die Aussage, nicht mit einem ResultSet zurückgegeben.
Ist die Zeile:
st.executeQuery(updateQuery)
Irgendwelche Ideen?
- Nicht alle Treiber ermöglichen anweisungsblöcke ausgeführt werden, wie eine Abfrage. Wenn dies funktioniert in die eine und nicht eine andere, die wahrscheinlich Schuldigen.
- das wäre nicht sehr klug von Microsoft donnie, ein select scope_identity() passieren MUSS, bevor alle anderen fügt und auf eine Verbindung mit dem gleichen job-id. Sie können natürlich führen Sie die Abfragen wieder zurück, aber es schränkt wie eine offene Verbindung kann von Anwendungen verwendet werden. Auch der SQL-server hat kein problem, das ausführen von mehreren Abfragen, und der Fahrer ist nicht T-SQL-bewusst, so hat er keine Ahnung, was es ist, der Sie ausführt. – Vainstah 0 secs ago
Du musst angemeldet sein, um einen Kommentar abzugeben.
Upgrade von SQL 2000 auf SQL 2005 und wechselte zu Microsoft SQL Server 2005 JDBC Driver, version 1.2. Ich bekam die Fehlermeldung "die Anweisung führte zu keinem Ergebnis" beim ausführen einer Insert -, gefolgt von SELECT SCOPE_IDENTITY()".Ich löste das Problem mit executeUpdate() und getGeneratedKeys statt executeQuery. Hier ist die vor und nach dem code.
Hinweis: Die Verbindung in diesem Beispiel ist java.sql.Verbindung nicht die com.microsoft.sqlserver.jdbc.SqlServerConnection.
SQL 2000-code
SQL-2005-code
Die Zeile, die Sie eingefügt gescheitert, daher gibt es keine Identität ? legen Sie einen Haltepunkt Abfrage generiert wird, die in Java Kopie der Abfrage-string und führen Sie es im management studio zu sehen, was das Ergebnis ist. Dies kann Ihnen zeigen, was Sie falsch machen.
Jede option zum aktualisieren der Treiber? Dann können Sie einfach
Statement#getGeneratedKeys()
. Siehe auch diesen Artikel: http://msdn.microsoft.com/en-us/library/ms378445%28SQL.90%29.aspxWenn das nicht eine option, dann müssen Sie, um das Feuer der
INSERT
undSELECT
einzeln nach einander auf die gleiche Verbindung.