![]() |
Datenbank: MSDE 2000 • Zugriff über: MSADO
Aus einer SQL- Datenbank ein Binärfeld auslesen
Hallo,
ich versuche, mit Delphi ein Binärfeld aus einem SQL- Server auszulesen. Leider bekomme ich immer eine Fehler bei der Typumwandlung. Beim Feld handelt es sich um ein BYTE- Feld mit der Größe 50. Hat jemand einen Lösungsansatz für mich ? var Buffer: array of Byte; Buffer:=rstTable.Fields['ManagerPassword']; funktioniert leider nicht. Gruß Franz |
Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
Such mal nach Beispielen die das gewünschte als BLOB-Feld auslesen.
|
Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
kennt jemand einen anderen Ansatz ?
|
Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
Delphi-Quellcode:
Bei persistenten Feldern (MyTableMyField ist ja bereits ein TBlobField)
TBlobField(MyTable.FieldByName('MyField')).SaveToStream (MyStream)
Delphi-Quellcode:
MyTableMyField.SaveToStream (MyStream)
|
Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
Herzlich willkommen in der Delphi-PRAXiS, Franz.
Dein Versuch mit dem Array of Byte war gar nicht so schlecht:
Delphi-Quellcode:
Wenn keine NUL-Character drin vorkommen, dann kannst du den Feldinhalt auch einfach über die Feld-Methode AsString() bearbeiten.
function GetVarBytes(f: TField; var bda: TByteDynArray): Boolean;
begin Result := f.DataType = ftVarBytes; if Result then DynArrayFromVariant(Pointer(bda), f.Value, TypeInfo(TByteDynArray)); end; procedure TDemoForm.ButtonClick(Sender: TObject); var bda: TByteDynArray; begin with ADOTable do if GetVarBytes(FieldByName('varbin'), bda) then ShowMessage(IntToStr(Length(bda))) else ShowMessage('?'); end; Freundliche Grüße vom marabu |
Re: Aus einer SQL- Datenbank ein Binärfeld auslesen
Vielen Dank an marabu.
Der Ansatz DynArrayFromVariant(Pointer(bda), f.Value, TypeInfo(TByteDynArray)); bringt die Lösung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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