Entwickler-Ecke

Datenbanken - BLOB in SQLite DB speichern mit Zeos


dontello - Di 05.04.11 21:45
Titel: BLOB in SQLite DB speichern mit Zeos
Hallo,

wie ist es möglich mit den Zeos Komponenten einen BLOB in die SQLite Datenbank zu speichern.
Mein bisheriger Versuch sah so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  str = String;
  sqliteQuery = TZQuery von Zeos


  str := 'INSERT INTO test(id,datei) VALUES (1, :blob)';
  sqliteQuery.SQL.Clear;
  sqliteQuery.SQL.Text := str;
  sqliteQuery.Params.ParamByName('blob').LoadFromFile('C:\test.datei', ftBlob);
  sqliteQuery.ExecSQL;


Tankard - Mi 06.04.11 05:32

hi,

wo ist denn das problem? so wie du es geschrieben hast, wird das funktionieren. der sqlitequery.sql.clear; befehl brauchst du nicht. da du ja den sql befehl sqlitequery.sqql.text zuweist.

gruss
tankard


dontello - Mi 06.04.11 08:48

Ich bekomme immer die Fehlermeldung 'SQL Error: Unrecognized Token: "" '
Was ja dann soviel wie 'unbekanntes Zeichen' heißen muss.

Wenn ich mir den SQL String ausgeben lasse, erhalte ich dieses hier:

'INSERT INTO testdata(datei) VALUES (:blob) WHERE id = 1'#$D#$A


Tankard - Mi 06.04.11 11:00

das kann ich jetzt nich nachvollziehen. hab das eben auch in lazarus mit zeos 7.0 ausprobiert und es klappt problemlos.


dontello - Mi 06.04.11 11:28

Arbeite hier mit Zeos 7.0 und Delphi 2009.

Komischerweise bekomme ich bei manchen Dateien eine Fehlermeldung: 'Unrecognized Token:" *Viele verwirrende Zeichen* ".
Vielleicht irgendwie ein UniCode Problem?
Alle anderen SQL Anweisungen funktionieren problemlos. Nur der BLOB will nicht in die Datenbank.


Tankard - Mi 06.04.11 11:36

blob ist ja dafuer da, dass man binary data speichern kann. hat nix mit unicode zu tun.
kannst du mir mal so eine datei zukommen lassen.


dontello - Mi 06.04.11 12:52

Ich habe zum testen eigentlich nur normale .txt Dateien oder Dateien aus dem Delphi Projektordner genommen.

Irgendwie wird mir durch das einfügen über den Parameter halt der SQL String zerschossen. Aus welchen Gründen auch immer.

Kannst du evtl. mal deinen Code hier posten?