![]() |
Datenbank: SQLite • Version: 3.9.2 • Zugriff über: UniDAC
SQL-Statement doesn't return rows
Hallo zusammen,
ich verzweifle ein bisschen. Ich beschäftige mich seit neuestem mit Datenbanken bzw deren Zugriff über ein Delphi-Projekt. Ich nutze hierfür SQLite und für den Zugriff UniDAC. Ich habe eine Tabelle mit dem SQLite-Browser erstellt. Via Grid und nem Memo kann ich die Tabelle anzeigen lassen und SQL-Befehle ausführen. Nun zu meinem Problem: wenn ich INSERT INTO Tabelle(Spalte1, Spalte2) VALUES ('Wert1','Wert2'); ausführe, bekomme ich die Fehlermeldung: SQL-Statement doesn't return rows führt die Anweisung aber dennoch aus. Wenn ich die Aussagen von Onkel Google richtig verstehe sagt die Fehlermeldung, dass es diese Zeile noch nicht gibt. Nun will ich ja mit INSERT INTO einen neuen Datensatz anlegen, natürlich ist der noch nicht da, deswegen nutze ich das doch?! Verstehe ich da nun was falsch? Muss ja, sonst käme die Meldung ja nicht :oops: LG |
AW: SQL-Statement doesn't return rows
Du darfst die Query nicht mit "Open" ausführen, sonder mit "ExecSQL".
Mehr ist es nicht. Alles was keine Datensätze zurückliefert geht über ExecSQL. |
AW: SQL-Statement doesn't return rows
Bzw. wenn man sich nicht für die Rückgabe interessiert.
|
AW: SQL-Statement doesn't return rows
Danke für deine Antwort. Das war es wirklich. *Kopf-->Tisch*
|
AW: SQL-Statement doesn't return rows
Zitat:
|
AW: SQL-Statement doesn't return rows
Bei ExecSQL wird die Abfrage ausgeführt, das Ergebnis aber nicht geholt. Das ist im Normalfall aber nicht sinnvoll.
Liefert die Abfrage ein Ergebnis -> Open, wenn nicht -> ExecSQL. |
AW: SQL-Statement doesn't return rows
Zitat:
|
AW: SQL-Statement doesn't return rows
Machts nicht zu kompliziert.
SELECT --> Open INSERT/UPDATE/DELETE/ALTER/CREATE/... --> ExecSQL |
AW: SQL-Statement doesn't return rows
Einfach gesagt: Was Datensätze zurückliefern "könnte" mit OPEN (egal, ob es "gerade" keine gibt)
und was niemals ein ResultSet liefert, das mit EXECUTE. Oder, wie schon gesagt wurde, SELECT mit OPEN und Rest mit EXECUTE. Aber wer es genauer wissen will, bezüglich dem SQL-Sprachumfang. :stupid: Wann wird OPEN verwendet: (ansonsten EXECUTE) Data Manipulation Language (DML) -> hier alle Abfragebefehle, sonst nicht Data Definition Language (DDL) -> nie Data Control Language (DCL) -> meistens nicht Data Query Language (DQL) -> immer Transaction Control Language (TCL) -> nie EXECUTE geht immer und OPEN wirft einen Fehler, wenn das Query "niemals" ein ResultSet liefern würde. |
AW: SQL-Statement doesn't return rows
Zitat:
Zitat:
K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz