AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL und Streams bzw. Blobs
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL und Streams bzw. Blobs

Ein Thema von Captnemo · begonnen am 16. Jun 2003 · letzter Beitrag vom 16. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

MySQL und Streams bzw. Blobs

  Alt 16. Jun 2003, 06:23
Hi Leute,

wie (in drei teufelsnamen ) kriegt man einen Stream oder ein Blob per SQL in ein Binaryfeld geladen. Ich möchte das, wenns irgendwie geht über ein tquery machen, nicht über ein ttable.

Alle bisherigen Suchanfragen zu diesem Problem, haben nicht zu einer befriedigenden Antwort geführt.
Hoffentlich könnt ihr mir ein wenig helfen.

Danke.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
darkstone

Registriert seit: 4. Feb 2003
26 Beiträge
 
#2
  Alt 16. Jun 2003, 07:31
Hi!

Eigentlich müsste das mit einem BlobStream, der mit dem Blob-Feld verknüpft ist, gehen.
Das folgende ist jetzt aus dem Stegreif: (keine Garantie, dass es funkt)

Delphi-Quellcode:
function WriteBlob( aDB: TDatabase; aTableName: String; aFileName: String ): Boolean;
var
  aQuery: TQuery;
  aBlobStr: TBlobStream;
  aFileStr: TFileStream;
begin
  aQuery := TQuery.Create( nil );
  aQuery.Database := aDB;
  aQuery.SQL.Add( 'SELECT * FROM '+aTableName+' WHERE Nr=1' );
  aQuery.RequestLive := True; // damit können Änderungen in TQuery-Feldern gemacht werden
  aQuery.Open;
  aQuery.Edit;
  aBlobStr := TBlobStream.Create( aQuery.FieldByName('BlobField') );
  aFileStr := TFileStream.Create( aFileName, fmOpenRead );
  aBlobStr.CopyFrom( aFileStr, aFileStr.Size );
  aQuery.Post;
  aBlobStr.Destroy;
  aFileStr.Destroy;
end;
Wie gesagt - ist aus dem Stegreif. Dies ist die BDE-Version - dbExpress funktioniert aber genau so. Mehr dazu in der Hilfe: TBlobStream
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3
  Alt 16. Jun 2003, 11:39
Hallo,

wenn ich von Interbase ausgehe, dann geht es per SQL (SQL ohne alles) nicht.
1. Du kannst eine UDF schreiben, die Dein Feld füllt
2. Du kannst eine IBUpdateSQL nehmen und dann auf das Feld mit AsString zugreifen

Ich hoffe, es hilft.

Lutz
Lutz
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4
  Alt 16. Jun 2003, 11:51
Nein kein Interbase (zu teuer). Ich nehme MySQL.
Das Beispiel von darkstone hat schon ganz gut geklappt. Allerdings habe ich noch Probleme beim auslesen. Das Funktioniert zwar auch im großen und ganzen, aber nur einmal.
Danach bekomme ich den Fehler, das der Datensatz von einem Benutzer geändert wurden, und deshalb das Post nicht gemacht werden kann.
Wenn ich das Programm neu starte nützt das nichts, ich muß erst die Datenbank runterfahren und neu starten. Dann gehts wieder einmal. (Ich bin der einzige User im Moment).

Wenn da noch einer was weiß...?
Der könnte dann so ca. 10000000000 Dankeschöns sein nennen
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5
  Alt 16. Jun 2003, 12:39
Hallo,

das klingt wie eine nicht abgeschlossene Transaction. Gibt es in MySQL sowas? Wenn ja sollte ein Commit hoffentlich das Problem lösen.

Lutz
Lutz
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6
  Alt 16. Jun 2003, 18:53
Zitat von Captnemo:
Nein kein Interbase (zu teuer).
Dann nimm doch Firebird. Ist ein Interbase(6.0?!)-Ableger und OpenSource!
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7
  Alt 16. Jun 2003, 19:23
Interbase in der Version 6 ist auch Freeware und läuft stabil :-)

Lutz
Lutz
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8
  Alt 16. Jun 2003, 19:33
Aber genau, wie Interbase 6 zu weiterentwickelt wurde, wurde auch Firebird weiterentwickelt!
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#9
  Alt 16. Jun 2003, 19:53
@Delphianer: Ob MySQL Transactionen unterstützt, bin ich mir nicht sicher, aber ich glaube nicht. aber wenn ja, dann nutze ich die nicht bewust.

@All: Ich würde nur ungerne von MySQL auf Interbase oder Firebird umsteigen, weil meine Anwendung und die Datenbank incl. 40 Clients schon beim Kunden läuft, und ich nicht alles wieder umstellen will.

Muß doch auch mit MySQL gehen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10
  Alt 16. Jun 2003, 20:24
Hallo,

ich habe gerade mal nachgelesen, MySQL unterstützt Transactions. Es gibt auch irgendwie einen Automodus.

Da Dir das noch nicht über den Weg gelaufen ist, hast Du bis jetzt noch nicht mit Queries gearbeitet? Welche Komponenten verwendest Du und wie greifst Du überhaupt auf die Datenbank zu?

Eventuell helfen auch die Methoden ApplyUpdates und CommitUpdates von TQuery.

Viele Grüße,

Lutz
Lutz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:56 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