SQL logic error (Zeos und SQLite)

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 475
Registriert: Di 1. Mai 2012, 09:11

SQL logic error (Zeos und SQLite)

Beitrag von Aliobaba »

Hallo,

Beide hier gezeigten SQL-Befehle funktionieren im DB-Browser problemlos.
Eingebunden aber in einem Programm funktioniert nur die obere Zeile, nicht aber die untere Zeile.
Das Programm meldet einen "SQL logic error".

Code: Alles auswählen

   Form_Start.ZConneu.ExecuteDirect( 'UPDATE MyPL  SET CKue = REPLACE( CKue ,  "||" , "|" ) ' ) ;  
   Form_Start.ZConneu.ExecuteDirect( 'UPDATE MyPL  SET CKue = '' Where CKue is NULL' ) ;
Wie kann das sein? Das SQL-Statement muss ja doch richtig sein, sonst würde ja der DB-Browser auch einen Fehler melden.
Lazarus-Programm (2.012) unter Windows mit SQLite und ZEOS

Gruß Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1094
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: SQL logic error (Zeos und SQLite)

Beitrag von fliegermichl »

Wenn du Hochkomma in einem PascalString haben willst, musst du die doppelt angeben.

Aliobaba
Lazarusforum e. V.
Beiträge: 475
Registriert: Di 1. Mai 2012, 09:11

Re: SQL logic error (Zeos und SQLite)

Beitrag von Aliobaba »

Dieser Ausdruck :

Code: Alles auswählen

   'UPDATE MyPL  SET CKue = '' Where CKue is NULL'
steht ja aber doch bereits zwischen zwei Hochkommas und ist in seiner Gesamtheit der Inhalt eines Strings.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
six1
Beiträge: 643
Registriert: Do 1. Jul 2010, 19:01

Re: SQL logic error (Zeos und SQLite)

Beitrag von six1 »

also EIN ' leitet einen String ein, oder schließt den ab.
Zwei '' erzeugen ein Zeichen ' im String

Du müsstest das also folgendermaßen schreiben:
'UPDATE MyPL SET CKue = '''' Where CKue is NULL'
Gruß, Michael

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1094
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: SQL logic error (Zeos und SQLite)

Beitrag von fliegermichl »

Oder gleich die doppelten Hochkomma nehmen. Soweit ich weiss, werden die vom SQL Server auch akzeptiert.

Benutzeravatar
theo
Beiträge: 9171
Registriert: Mo 11. Sep 2006, 19:01

Re: SQL logic error (Zeos und SQLite)

Beitrag von theo »

Dieses Zeichen geht normalerweise auch: ` ($60, Akut /accent aigu)

Aliobaba
Lazarusforum e. V.
Beiträge: 475
Registriert: Di 1. Mai 2012, 09:11

Re: SQL logic error (Zeos und SQLite)

Beitrag von Aliobaba »

Uuups, ja, jetzt sehe ich es auch.
Ich sollte also doch zukünftig meine Fragen wieder ganz konsequent in der Rubrik "Einsteigerfragen" posten. :oops:
Danke!
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5185
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: SQL logic error (Zeos und SQLite)

Beitrag von af0815 »

Aliobaba hat geschrieben:
Mo 31. Jan 2022, 15:48
Ich sollte also doch zukünftig meine Fragen wieder ganz konsequent in der Rubrik "Einsteigerfragen" posten. :oops:
Nein nicht wirklich, das passiert auch Profis, falls sie mal vergessen das ganze sauber und konsequent über Parameter zu machen. Deswegen vermeide ich das ExecuteDirect und arbeite immer über Queries und Parameter.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten