![]() |
Datenbank: MySQL • Zugriff über: ADO
Blobfeld in DB schreiben mit INSERT-Befehl
Hallo zusammen,
hab da ein kleines Problem mit dem Schreiben von Blobfelder in eine MySQL-DB. Habe vorher mit Append & Co gearbeitet, aber ich mußte aufgrund von Performance Treibereinstellungen ändern. Nun funktionieren die einfachen Dinge des Lebens nicht mehr. Also muß ich mich der weiteren Dinge behelfen und das ist die Speicherung von Sachen in der DB über einen direkten SQL-Befehl. Leider versuche ich vergeblich zu finden wie man Blobfelder über SQL-Befehle speichert. Hoffe mir kann da jemand weiterhelfen. Gruß, Moony |
Re: Blobfeld in DB schreiben mit INSERT-Befehl
Hallo Moony,
MySQL kennt folgende Syntax:
SQL-Code:
Aber wer zwingt dich dazu auf einen BlobStream zu verzichten?
UPDATE myTable SET myBlob = LOAD_FILE("c:/tmp/picture-1") WHERE id = 1
Grüße vom marabu |
Re: Blobfeld in DB schreiben mit INSERT-Befehl
Dafür brauch ich einen MySQL Client. Ich hole mir die Dateien aber irgendwo her und nicht vom Server direkt.
Wer sagt dass ich auf den Stream verzichten muß. Ich wüßte nur nicht wie genau das Ganze in die Datenbank gebracht werden soll. Gruß, Moony |
Re: Blobfeld in DB schreiben mit INSERT-Befehl
Vielleicht so:
Delphi-Quellcode:
marabu
var
s: TMemoryStream; fn: TFileName; begin with ADOQuery do begin SQL.Text := 'SELECT myBlob FROM myTable WHERE id = 1'; Open; Edit; TBlobField(Fields[0]).LoadFromStream(s); // Daten intern? TBlobField(Fields[0]).LoadFromFile(fn); // Daten extern? Post; Close; end; end; |
Re: Blobfeld in DB schreiben mit INSERT-Befehl
@ marabu: Danke, aber das Problem besteht eben, dass ich keinen normalen Post-Befehl ausführen kann, weil über den MySQL-Treiber ein Fehler ausgespuckt wird(E_FAIL). Deshalb muß ich über einen ADOCommand einen direkten SQL-Befehl ausführen.
|
Re: Blobfeld in DB schreiben mit INSERT-Befehl
Sorry - manchmal verstehe ich etwas langsamer. Du scheinst per OLEDB Provider für ODBC über den MySQL ODBC Treiber auf die Datenbank zuzugreifen. Ich kann das mit dem Fehler jetzt nicht untersuchen, aber mit ADOCommand sollte es auch gehen. Setze den CommandText auf 'UPDATE myTable SET myBlob = :blob WHERE id = 1' oder was immer dir vorschwebt und befülle den Parameter blob mit den notwendigen Daten - LoadFromStream() und LoadFromFile() stehen dir auch dort zur Verfügung.
marabu |
Re: Blobfeld in DB schreiben mit INSERT-Befehl
Zitat:
Delphi-Quellcode:
ADOQuery1.SQL.Text:='Insert into mytable(myfield) values(:blob)';
ADOQuery1.Parameters.ParamByName('blob').LoadFromFile('c:\test.txt',ftBlob); ADOQuery1.ExecSQL; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz