AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Blobfeld in DB schreiben mit INSERT-Befehl
Thema durchsuchen
Ansicht
Themen-Optionen

Blobfeld in DB schreiben mit INSERT-Befehl

Ein Thema von Moony · begonnen am 20. Mär 2006 · letzter Beitrag vom 21. Mär 2006
Antwort Antwort
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 20. Mär 2006, 15:58
Datenbank: MySQL • Zugriff über: ADO
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
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 20. Mär 2006, 16:32
Hallo Moony,

MySQL kennt folgende Syntax:

UPDATE myTable SET myBlob = LOAD_FILE("c:/tmp/picture-1") WHERE id = 1 Aber wer zwingt dich dazu auf einen BlobStream zu verzichten?

Grüße vom marabu
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 20. Mär 2006, 16:51
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
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 20. Mär 2006, 17:16
Vielleicht so:

Delphi-Quellcode:
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;
marabu
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 20. Mär 2006, 17:30
@ 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.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 20. Mär 2006, 18:53
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
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#7

Re: Blobfeld in DB schreiben mit INSERT-Befehl

  Alt 21. Mär 2006, 09:17
Zitat von Moony:
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.
Delphi-Quellcode:
ADOQuery1.SQL.Text:='Insert into mytable(myfield) values(:blob)';
ADOQuery1.Parameters.ParamByName('blob').LoadFromFile('c:\test.txt',ftBlob);
ADOQuery1.ExecSQL;
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr.
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