SQLite3 update
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
SQLite3 update
Hallo,
Habe ein kleines Problem und verstehe nicht warum.
Wenn ich den Befehl Datenbank update benutze geht dieser Befehl nur wenn es eine Zahl ist. Sobald Buchstaben dabei kommen, tritt immer ein Fehler auf.
DataModule1.SQLQuery1.SQL.Text:='UPDATE ' + Tabellenname + ' SET ' + Header + '=' + Header + ', ' + Header + '=' + Zuaenderndendereintrag + ' WHERE ID=' Zeilennumer;
Kann mir bitte jemand sagen, was ich hier falsch mache?
Danke und allen einen schönen Start in die Woche
Habe ein kleines Problem und verstehe nicht warum.
Wenn ich den Befehl Datenbank update benutze geht dieser Befehl nur wenn es eine Zahl ist. Sobald Buchstaben dabei kommen, tritt immer ein Fehler auf.
DataModule1.SQLQuery1.SQL.Text:='UPDATE ' + Tabellenname + ' SET ' + Header + '=' + Header + ', ' + Header + '=' + Zuaenderndendereintrag + ' WHERE ID=' Zeilennumer;
Kann mir bitte jemand sagen, was ich hier falsch mache?
Danke und allen einen schönen Start in die Woche
Re: SQLite3 update
Keine Ahnung, wie deine Deklaration aussieht. Empfehlen würde ich aber Parameter zu verwenden z.B.:
Code: Alles auswählen
DataModule1.SQLQuery1.SQL.Text := 'UPDATE ' + Tabellenname + ' SET ' + Header + '= :aHeader WHERE ID = :aID;';
DataModule1.SQLQuery1.ParamByName('aHeader').AsString := 'Neuer String';
DataModule1.SQLQuery1.ParamByName('aID').AsInteger := Zeilennumer;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: SQLite3 update
vazili_Zaitzef hat geschrieben:Hallo,
Habe ein kleines Problem und verstehe nicht warum.
Wenn ich den Befehl Datenbank update benutze geht dieser Befehl nur wenn es eine Zahl ist. Sobald Buchstaben dabei kommen, tritt immer ein Fehler auf.
DataModule1.SQLQuery1.SQL.Text:='UPDATE ' + Tabellenname + ' SET ' + Header + '=' + Header + ', ' + Header + '=' + Zuaenderndendereintrag + ' WHERE ID=' Zeilennumer;
Kann mir bitte jemand sagen, was ich hier falsch mache?
Danke und allen einen schönen Start in die Woche
joar weil weil Buchstaben in "" gesetzt werden müssen
also so
DataModule1.SQLQuery1.SQL.Text:='UPDATE ' + Tabellenname + ' SET ' + Header + '=' + Header + ', ' + Header + '= " ' + Zuaenderndendereintrag + ' " WHERE ID=' Zeilennumer;
aber ich würde das so machen wie Michl geschrieben hat
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: SQLite3 update
Hallo,
allen einen herzlichen Dank für die Schnelle Antwort.
Das mit den " hat geholfen und arbeitet nun so wie es sein soll
Warum würdet Ihr das mit den 3 Zeilen Programmieren?
Für mich ist die Wahl auf eine Zeile gefallen, um Programmcode zu sparen, was mir später sicher leichter fallen wird den Code wieder zu verstehen. Laut meinen Recherchen macht beides das gleiche. Stimmt das etwa nicht
allen einen herzlichen Dank für die Schnelle Antwort.
Das mit den " hat geholfen und arbeitet nun so wie es sein soll
Warum würdet Ihr das mit den 3 Zeilen Programmieren?
Für mich ist die Wahl auf eine Zeile gefallen, um Programmcode zu sparen, was mir später sicher leichter fallen wird den Code wieder zu verstehen. Laut meinen Recherchen macht beides das gleiche. Stimmt das etwa nicht
Re: SQLite3 update
Nachdem mich mse mal darauf hingewiesen hat, achte ich sehr genau darauf, Paramter zu verwenden: https://de.wikipedia.org/wiki/SQL-Injection#Gegenma.C3.9Fnahmenvazili_Zaitzef hat geschrieben:Warum würdet Ihr das mit den 3 Zeilen Programmieren?
Für mich ist die Wahl auf eine Zeile gefallen, um Programmcode zu sparen, was mir später sicher leichter fallen wird den Code wieder zu verstehen. Laut meinen Recherchen macht beides das gleiche. Stimmt das etwa nicht
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
- af0815
- Lazarusforum e. V.
- Beiträge: 6199
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: SQLite3 update
Mit Parameter hat der SQL-Server die Möglichkeit die Ausführung zu Cachen und zu Prüfen, das bringt Sicherheit und auch Geschwindigkeit. Ist vielleicht bei Dir momentan nicht so wichtig, wenn mans dauernd macht, ist es Gewohnheit. Ausserdem ist man nicht so vom funktionieren der aktuellen Stringumwandlungen abhängig. Beispiel Zahlen und Umlaute. Wenn man die plötzlich verarbeiten will/muß, so wünsche ich dir bei den Stringfunktion viel Spaß (Leidvolle Erfahrung).
Andreas
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: SQLite3 update
Ja Prüfen ist wichtig.
Dann muss ich wohl noch mal ran und von vorne beginnen.
Auf zum zweiten Versuch
Danke für Eure Hilfe!!!
Dann muss ich wohl noch mal ran und von vorne beginnen.
Auf zum zweiten Versuch
Danke für Eure Hilfe!!!
-
- Beiträge: 43
- Registriert: Do 6. Dez 2012, 21:55
- OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0)
- CPU-Target: 64Bit
Re: SQLite3 update
Hi,
ich habe mal wieder noch eine Frage zur SQLite Datenbank. Wie kann ich auslesen, mit welchem Datentyp Spalte in der Datenbank erstellt wurde
Beispiel:
Eine Tabelle wurde erstellt und die Spalte "Eintrag" ist mit dem Datentyp VARCHAR erstellt worden.
Wie kann ich später herausbekommen, das der Eintrag VARCHAR dafür benutzt wurde
ich habe mal wieder noch eine Frage zur SQLite Datenbank. Wie kann ich auslesen, mit welchem Datentyp Spalte in der Datenbank erstellt wurde
Beispiel:
Eine Tabelle wurde erstellt und die Spalte "Eintrag" ist mit dem Datentyp VARCHAR erstellt worden.
Wie kann ich später herausbekommen, das der Eintrag VARCHAR dafür benutzt wurde
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: SQLite3 update
Ich habe eine Off-Topic Frage zu SQLite3.
Ich habe gehört diese Version soll (bei gewissen Aktionen) massiv (10 mal) schneller sein als die vorige Version.
Könnt Ihr das bestätigen ?
-Michael
Ich habe gehört diese Version soll (bei gewissen Aktionen) massiv (10 mal) schneller sein als die vorige Version.
Könnt Ihr das bestätigen ?
-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6199
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: SQLite3 update
Ich kann dir nur bestätigen, das mit der richtigen Wahl von einigen Einstellungsmöglichkeiten verdammt viel Speed herausholen kann bei der Version 3. Dazu gab es hier mal einen Thread über JSON Daten und bei den Versuchen ist mir das aufgefallen.
Edit:
Edit:
af0815 hat geschrieben:Meine schnellste Version 1000 Datensätze in ca. 5.5 sec
Folgendes mach SQLite schnell. Sollte aber nach dem Import wieder einschalten werden. Damit wartet SQLite nicht aus die Fertigmeldung des Betriebssystems, sondern schreibt was da Zeug hergibt. Wenn es zu einem Crash kommt, könnten die Daten inkonsistent sein.Code: Alles auswählen
ZConnection1.StartTransaction;
ZConnection1.ExecuteDirect('PRAGMA synchronous = OFF;');
ZConnection1.Commit;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: SQLite3 update
vazili_Zaitzef hat geschrieben:ich habe mal wieder noch eine Frage zur SQLite Datenbank. Wie kann ich auslesen, mit welchem Datentyp Spalte in der Datenbank erstellt wurde
Beispiel:
Eine Tabelle wurde erstellt und die Spalte "Eintrag" ist mit dem Datentyp VARCHAR erstellt worden.
Wie kann ich später herausbekommen, das der Eintrag VARCHAR dafür benutzt wurde
Über den Befehl
Code: Alles auswählen
http://sqlite.org/pragma.html#pragma_table_info
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: SQLite3 update
af0815 hat geschrieben:Ich kann dir nur bestätigen, das mit der richtigen Wahl von einigen Einstellungsmöglichkeiten verdammt viel Speed herausholen kann bei der Version 3. Dazu gab es hier mal einen Thread über JSON Daten und bei den Versuchen ist mir das aufgefallen.
Vielen Dank !
-Michael