MySQL Blob in Datei schreiben

Anfängerfragen zum Programmieren mit PureBasic.
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

So.. ein Vorschlag

Beitrag von Beforegod »

Code: Alles auswählen

Procedure.s GetDatabaseText()

If DatabaseQuery("SELECT LENGTH(text) FROM table WHERE 1;")
  If NextDatabaseRow()
  result$="" : size=Val(GetDatabaseString(0))
  For i=1 To size Step 4095
   If DatabaseQuery("SELECT SUBSTRING(text,"+Str(i)+",4095) FROM    table WHERE 1;")
      If NextDatabaseRow() : result$+GetDatabaseString(0) : EndIf
    EndIf
   Next
   ProcedureReturn result$
   EndIf
  EndIf

EndProcedure
Dieser Code funktioniert wunderbar mit Longtext (wird auch Binär gespeichert) nur wenn man große Binäre Daten aus einer Datenbank laden will geht es nicht.

Mein Vorschlag (da anscheinend die Grenze des Strings bei 8192 Byte = 8 kb liegen; mehr habe ich nicht herausbekommen bei dieser Abfrage) wäre ein Array zu definieren, wobei jedes Element eben 8192 Bytes aufnimmt.
Am Ende lesen wir dieses Array aus und fügen es (beim Schreiben in eine Datei) einfach zusammen.

Code: Alles auswählen

Dim blobArray.s[255]

Procedure.s GetDatabaseBlob()
  If DatabaseQuery("SELECT LENGTH(text) FROM table WHERE 1;")
    If NextDatabaseRow()
    result$=""
    step=0
    size=Val(GetDatabaseString(0))
    For i=1 To size Step 4095
      If DatabaseQuery("SELECT BINARY SUBSTRING(text,"+Str(i)+",4095) FROM    table WHERE 1;")
        If NextDatabaseRow()
         ;Hier eine Schleife um Step alle zwei Schritte abzufangen
         ;hab keinen Plan was hier stehen könnte
         blobArray.s[step] = GetDatabaseString(0)
        EndIf
       EndIf
     Next
   ProcedureReturn result$
   EndIf
  EndIf

EndProcedure
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Beforegod hat geschrieben:@kiffi :
Geht es mit SQLite3 einfacher? Wenn ja würde ich umsteigen ;)
kommt darauf an, was Du programmieren willst. SQLite ist insofern leichter
zu handhaben, als dass das System aus genau einer DLL besteht. Im
günstigsten Fall kopierst Du also nur Deine EXE, die SQLite.DLL und u.U. noch
Deine Datenbank auf den Zielrechner und fertig ist die Installation ;-)

Ach, halt! Es ist ja jetzt dank Rings auch möglich, DLLs direkt in die EXE zu
includen. Du brauchst dann also nur noch zwei Dateien :-)

Wenn Du aber ein Datenbanksystem benötigst, auf das mehrere User
gleichzeitig zugreifen sollen, dann ist SQLite hierfür ungeeignet.

Alles weitere hier: http://www.sqlite.org/

Grüße ... Kiffi
a²+b²=mc²
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Beitrag von Beforegod »

Kiffi hat geschrieben:
Beforegod hat geschrieben:@kiffi :
Geht es mit SQLite3 einfacher? Wenn ja würde ich umsteigen ;)
kommt darauf an, was Du programmieren willst. SQLite ist insofern leichter
zu handhaben, als dass das System aus genau einer DLL besteht. Im
günstigsten Fall kopierst Du also nur Deine EXE, die SQLite.DLL und u.U. noch
Deine Datenbank auf den Zielrechner und fertig ist die Installation ;-)

Ach, halt! Es ist ja jetzt dank Rings auch möglich, DLLs direkt in die EXE zu
includen. Du brauchst dann also nur noch zwei Dateien :-)

Wenn Du aber ein Datenbanksystem benötigst, auf das mehrere User
gleichzeitig zugreifen sollen, dann ist SQLite hierfür ungeeignet.

Alles weitere hier: http://www.sqlite.org/

Grüße ... Kiffi
hmm gut, es sollen mehrer Leute auf diese Datenbank zugreifen.
Dann wird es Zeit das ein BLOB Element programmiert wird ;)
Diese Welt ist krank und ich bin es auch...
Benutzeravatar
dige
Beiträge: 1236
Registriert: 08.09.2004 08:53

Beitrag von dige »

@Kiffi: Deine BLOB SQlite Einbindung kannst Du die mal bitte posten? Oder
ist die PBOSL Lib aktualisiert?
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> @Kiffi: Deine BLOB SQlite Einbindung kannst Du die mal bitte posten?

die steckt zur Zeit noch in einer frühen Beta-Phase. Ich muss mir nun
verschiedene Szenarien überlegen, um meine Funktionen dementsprechend
flexibel zu programmieren.

Wenn Du ernsthaftes Interesse an einem Beta-Test hast, kann ich Dir gerne
den Code zusenden.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
dige
Beiträge: 1236
Registriert: 08.09.2004 08:53

Beitrag von dige »

Eilt nicht, ist nur Interessehalber. Wenns was lauffähiges gibt, würd'
ich aber gern mal testen :)
"Papa, ich laufe schneller - dann ist es nicht so weit."
Antworten