Seite 3 von 3
So.. ein Vorschlag
Verfasst: 26.09.2005 20:08
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
Verfasst: 26.09.2005 21:01
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
Verfasst: 27.09.2005 08:05
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

Verfasst: 29.09.2005 09:37
von dige
@Kiffi: Deine BLOB SQlite Einbindung kannst Du die mal bitte posten? Oder
ist die PBOSL Lib aktualisiert?
Verfasst: 29.09.2005 10:16
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
Verfasst: 30.09.2005 08:41
von dige
Eilt nicht, ist nur Interessehalber. Wenns was lauffähiges gibt, würd'
ich aber gern mal testen
