Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Bilder von MSSQL in MySQL kopieren (https://www.delphipraxis.net/157924-bilder-von-mssql-mysql-kopieren.html)

Hansi 30. Jan 2011 10:23

Datenbank: MSSQL MYSQL • Version: x • Zugriff über: ADO Zeos

Bilder von MSSQL in MySQL kopieren
 
Hallo,

in meinem Programm kopiere ich Jpeg-Bilder von einer MSSQL (Feldtyp Image) in eine MYSQL (Blob). Das funktioniert und die Bilder kommen auch korrekt an.
Umgekehrt wenn ich aus dieser MySQL das Bild wieder in eine MSSQL speichern will speichert er irgendwas ab und das Bild ist defekt (Kodierungsfehler meint Windows).

Muss ich da was bestimmte beachten?

mkinzler 30. Jan 2011 10:24

AW: Bilder von MSSQL in MySQL kopieren
 
Wie Transferierst du?

Hansi 30. Jan 2011 10:29

AW: Bilder von MSSQL in MySQL kopieren
 
meinst du das?

Mit Zeos von MySQL in die MSSQL DB und mit ADO von MSSQL in die MYSQL.

mkinzler 30. Jan 2011 10:29

AW: Bilder von MSSQL in MySQL kopieren
 
Und wie sieht der Code aus?

Hansi 30. Jan 2011 10:37

AW: Bilder von MSSQL in MySQL kopieren
 
ich hatte den Code in mehreren Schleifen drinnen und da hat er "Schrott" kopiert. Nachdem ich den Code rausgenommen habe und einzeln durchlaufen lassen habe, tut es... Man muss nicht alles verstehen. ;)

Code:
With ZQ1 do begin
        Active := False;
        SQL.Clear;
        SQL.Text := ' Insert Into bilder (artikelbild, artikel_id, path, bild, size, bildnummer) Values '+
                    ' (:p1, :p2, :p3, :p4, :p5, :p6)';
        ParamCheck := True;
        ParamByName('p1').Value := AQ2.FieldByName('a_artikelbild').Value;;
        ParamByName('p2').Value := AQ2.FieldByName('a_artikel_id').Value;
        ParamByName('p3').Value := AQ2.FieldByName('a_path').Value;
        ParamByName('p4').Value := AQ2.FieldByName('a_bild').Value;
        ParamByName('p5').Value := AQ2.FieldByName('a_size').Value;
        ParamByName('p6').Value := AQ2.FieldByName('a_bildnummer').Value;
        ExecSQL;
      end;
Fehler lag also zwischen den Ohren. Danke für die Hilfe...

sx2008 30. Jan 2011 14:23

AW: Bilder von MSSQL in MySQL kopieren
 
Da sind immer noch Fehler drin.
Die Zuweisung an
Delphi-Quellcode:
SQL.Text
beinhaltet automatisch ein
Delphi-Quellcode:
SQL.Clear
.
SQL.Clear ist hier also überflüssig.
Aber das eigentliche Problem ist, dass du dein Code-Fragment mehrfach aufrufst.
Immer wieder SQL.Text zuzuweisen ist aber unfein, denn dies löst intern in der Komponente einiges an Arbeit (Parsen der Parameter, Datenbankanfrage wegen den Datentypen) aus.
Die saubere Lösung wäre also den SQL.Text ausserhalb der Schleife zuzuweisen.
Und auch das
Delphi-Quellcode:
Active := False
ist eine überflüssige Anweisung.

mkinzler 30. Jan 2011 14:36

AW: Bilder von MSSQL in MySQL kopieren
 
Die eigentliche Konvertierung findet irgendwo innerhalb der ZEOS statt

Hansi 30. Jan 2011 14:52

AW: Bilder von MSSQL in MySQL kopieren
 
@sx2000: Vielen Dank für den Hinweis mit False und clear; lasse ich ab sofort weg. Das mit der Schleife prüfe ich wie ich das umsetze.

leider habe ich inzwischen ein neues Problem. Und zwar funktioniert die Übertragung. bei größeren Bilder ich rede hier von 70kb jpg fehlen unten am Bild immer Zeilen. Bei kleineren Bildern mit 30kb tut es.
Bestimmt liegt es daran, dass nicht alle Daten übertragen werden. Nur wo liegt der Fehler? hat jemand eine Idee?

Sir Rufo 30. Jan 2011 16:21

AW: Bilder von MSSQL in MySQL kopieren
 
Bei MySQL gibt es eine Server-Einstellung, die die maximale von erlaubten Blob-Streams bei der Übertragung regelt.
Pervers ist, dass die Übertragung scheinbar funktioniert, auf dem MySQL-Server die Daten aber nur bis zu diesem Wert gespeichert werden.

Den Parameter-Namen habe ich gerade nicht zur Hand ...

Obwohl ... hast du das Feld im MySQL tatsächlich als BLOB definiert?
Da gehen nur 64kB rein ;)

Du solltest es mal mit einem MEDIUMBLOB versuchen
http://dev.mysql.com/doc/refman/5.1/...-overview.html

Hansi 30. Jan 2011 20:05

AW: Bilder von MSSQL in MySQL kopieren
 
Hallo,

Danke für den Hinweis mit dem Blob. Habe ich geändert.

leider kommen die Bilder immer noch defekt an.

Meine Bilder sind ja schon in beiden DB also mssql und mysql gespeichert. Muss ich da was mit Stream usw machen oder reicht da nicht ein "normales" update SQL und "hin und her kopieren"?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz