![]() |
AW: Variablen übergeben bei insert
Sorry Leute, aber bin ich irgendwie Blöd? Muss man in SQL nicht die Pascal-Strings verwenden?
Also mit ' und nicht mit "...? Das nur am Rande, ich kenne mich mit Delphi SQL-API Zeugs nicht so gut aus. Außerdem empfehle ich persönlich die AUTO_INCREMENT-Option bei IDs. Das macht es deutlich leichter, da man auch im nachhinein noch Einträge einfügen kann, ohne die höcchste ID zu kennen. Geht allerdings nur bei UNIQUE bzw. PRIMARY-Spalten. Auch würde ich persöhnlich zur Fehlervermeidung empfehlen, alle Strings in SQL in Anführungszeichen zu packen. Denn wenn der Spalten-/Zeilenbezeichner oder der Kästchenwert Leerzeichen oder andere reservierte Zeichen/Ausdrücke enthält (wieso auch immer) dann kriegst du einen Fehler oder noch schlimmer, es wird eine falsche Anfrage ausgeführt. |
AW: Variablen übergeben bei insert
@Dennis:
Also wenn ich sowas mache und keine Parameter verwende, dann nutze ich QuotedStr. Damit hab' ich dann immer das Richtige, ohne weiter drüber nachdenken zu müssen.
Delphi-Quellcode:
So kann man auch recht einfach SQL-Scripte erstellen, die man dann später mit anderen Mitteln, über irgendeine Datenbankoberfläche ... in die Datenbank "jagen" kann.
const
csSQL = 'INSERT INTO Buecher(BuchID,Titel, Aid, ISBN) VALUES (NULL, %s, %d, %s)'; ... begin ... FSQLCommandText := Format(csSQL,[QuotedStr('B1'), AId, QuotedStr('123')]); ... |
AW: Variablen übergeben bei insert
Zitat:
![]() Zitat:
Außerdem bleibt hier immer noch das Problem, dass falls der String selbst Zeichen wie ' enthält, diese so noch nicht "escaped" werden. Das muss man noch über eine Kodierungs-/Dekodierungs-Routine machen. Ansonsten kriegst du nämlich wurstsalat wenn dein String zum Beispiel ' Zeichen enthält. Außerdem musst du darauf achten, dass du AnsiQuotedStr bei Multibyte-Strings benutzt. |
AW: Variablen übergeben bei insert
Zitat:
' und " und manchmal auch ´ Sie unterscheiden aber anhand des Quotings, um was für eine "Art" von String es sich handelt > Text (Strings) > Bezeichner (z.B. Namespace-, Typen-, Tabellen- oder Spaltenbezeichner) SQL kenn mehr Steuerzeichen, darum ist QuoteString auch falsch, denn wie in den üblichen C-Dialekten, ist der Backslash "\" ein Steuerzeichen und den behandelt die RTL-Funktion QuoteStr garnicht. Wie gesagt, jede "orgendliche" Datenbank-Schnittstelle besitzt mindetens eine SQL-Quote-Funktion und jene muß man verwenden. |
AW: Variablen übergeben bei insert
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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