Entwickler-Ecke

Datenbanken - Probleme mit Binärdaten beim SQL-Script bauen


davidbaumann - Fr 19.08.05 09:00
Titel: Probleme mit Binärdaten beim SQL-Script bauen
Ich habe eine kleine Klasse geschrieben, die mir aus einer Datenbank ein Insert-Script macht. Integer usw geht schon alles.
Jetzt hat eine Datenbank ein Feld vom Typ 'Image', also binär.
Bis jetzt baue ich das Script so:


Quelltext
1:
2:
3:
4:
5:
6:
case SQLDataType[ColumnProperties[i].iFieldType] of
 _string:            sData :=   sData + char(39) +  Collect[ColumnProperties[i].sFieldName] + char(39);
 _float:             sData := sData + floatToStr (Collect[ColumnProperties[i].sFieldName]);
 _integer:           sData := sData + IntToStr(Collect[ColumnProperties[i].sFieldName]);
 _datetime:          sData := sData + DateTimeToStr(Collect[ColumnProperties[i].sFieldName]);
 _binary:            sData := sData + VarToStr(Collect[ColumnProperties[i].sFieldName]);


Mit VarToStr hats nicht geklappt...
ColumnProperties[i].sFieldName gibt im Endeffekt einfach nur den Spaltennamen zurück, also nicht verwirren lassen.
Also ich brauch es dann als string.

Vielen Dank im Voraus,
David


Edit: Ist eine MSSQL Datenbank und ich habe Delphi 7


davidbaumann - Fr 19.08.05 16:43

Ich brauche wirklich eure Hilfe, sonst ist mein ganzes Wochenende futsch und ich kann auf der Lanparty Delphi programmieren (davon habe ich schon immer mal geträumt)

MfG,
Baumi


rochus - Fr 19.08.05 16:50

Hallo.
Ich wüsste nicht, wie das so gehen sollte - zumindest nutze ich lieber den umweg über einen MemoryStream/Blobstream.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  MS: TMemoryStream;
begin
  { ... }
  MS := DeineQuery.CreateBlobStream(Deinequery.FieldByName('Feldname')) AS TMemoryStream;
  { do something with MS }


rochus - Fr 19.08.05 16:52

Wobei mir gerade noch merkwürdig scheint:

du möchtest aus der Datenbank ein insertskript haben. Wozu? wenn du von der einen Tabelle in die andere schreiben möchtest geht das auch so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
INSERT INTO TabellenName(Feld1, Feld2, Feld3, ... FeldN)
SELECT Feld1
     , Feld2
     , Feld3
     , ...
     , FeldN
FROM AndereTabelle


rochus - Fr 19.08.05 16:55

Und hier vielleicht noch was, das dir helfen könnte:
http://www.elists.org/pipermail/delphi-db/2002-September/006275.html

gefunden durch:
Suche bei Google TADOQUERY INSERT BLOB


davidbaumann - Fr 19.08.05 17:17

Ok, vielen Dank erstmal.
Die erste Lösung hört sich schon mal gut an, ich hoffe mal das hilft mir irgendwie...
Das Script soll zB beim Kunden erstellt werden, wenn wir nen Datenkbankabzug haben wollen oder wenn wir ein Script für einen Installer schreiben.
MfG,
Baumi