Announcement

Collapse
No announcement yet.

BLOB in IB mit Hilfe von Visual Basic?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • BLOB in IB mit Hilfe von Visual Basic?

    Wie geht das??? Die hier gefundenen Beispiele scheinen sich alle auf Delphi zu beziehen.

    Es würde mir ja schon reichen, wenn ich wüßte wie mal über sql eine Datei in ein Blob- Feld einliest. Daß das nicht geht kann ich mir nicht vorstellen, schließlich ist doch IB der Vater des BLOB!

  • #2
    Hallo,

    die allesentscheidende Frage ist, über welchen Weg das Visual Basic-Programm auf die InterBase-Datenbank zugreift. Wenn der Zugriff über ADO läuft (ODBC-Treiber des InterBase), so ist die Vorgehensweise identisch. Ich unterstelle dabei, dass mindestens MDAC 2.5 verwendet wird: <br>
    1. ADO-Stream-Objekt für den Typ <b>adTypeBinary</b> anfordern <br>
    2. ADO-Stream: <b>LoadFromFile</b> lädt Dateiinhalt in den Stream <br>
    3. ADO-Recordset-Objekt anfordern <br>
    4. ADO-RecordSet: Leeres RecordSet über <b>Open</b> anfordern: <i>SELECT ID, FileContents FROM StreamBLOBDemo WHERE 1 = 0</i> <br>
    4. ADO-RecordSet: Über <b>AddNew</b> neuen Datensatzpuffer anfordern <br>
    5. Stream-Inhalt zuweisen: <i>RecordSet.Fields.Item['FileContents'].Value := Stream.Read(adReadAll)</i> <br>
    6. Datensatz speichern: <b>Update</b>-Methode des RecordSets

    Da ich nicht mit VB hantiere, kann ich bei den Beispielen nur die Delphi-Syntax für den ADO-Zugriff verwenden. Allerdings spielt bei ADO die verwendete Sprache nur eine untergeordnete Rolle, so dass alles auch mit VB nachgebaut werden kann.

    P.S: Es ist nicht möglich, über eine "nackte" SQL-Anweisung die BLOb-Daten gleich dort unterzubringen (mit Ausnahme des Sonderfalls beim Umkopieren von Tabellen der gleichen Datenbank). Man benötigt entweder <br>
    a) eine parametisierte INSERT/UPDATE-Anweisungen, wobei die BLOb-Daten als Parameter übergeben werden, oder <br>
    b) eine editierbare Datenmenge (siehe ADO-Beispiel).

    Comment

    Working...
    X