Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS Main Plugin, MBS SQL Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /SQL/SQLite Blob test
This example is the version from Sun, 20th Aug 2016.
Project "SQLite Blob test.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
EventHandler Sub Open()
// use built in library
call InternalSQLiteLibraryMBS.Use
dim con as new SQLConnectionMBS
try
// where is the library?
'#if TargetWin32 then
'con.Option(con.kOptionLibrarySQLite) = "sqlite.dll"
'#elseif TargetLinux
'con.Option(con.kOptionLibrarySQLite) = "sqlite.so"
'#elseif TargetMachO then
'con.Option(con.kOptionLibrarySQLite) = "sqlite.dylib"
'#else
'?
'#endif
// connect to database
dim path as string
if TargetMacOS then
path = "/tmp/test.db" // put the database in the temporary folder
else
path = "test.db" // for Windows and Linux in the current folder the application is inside.
end if
con.Connect(path,"","",SQLConnectionMBS.kSQLiteClient)
// create table
con.SQLExecute "Create table if not exists BlobTest(ID integer PRIMARY KEY AUTOINCREMENT, name varchar(20), image blob)"
// insert blob
dim pic as Picture = LogoMBS
// we use MemoryBlock here to avoid conversion to string
'dim jpegData as string = pic.GetData(Picture.FormatJPEG, 80)
dim jpegData as MemoryBlock = pic.GetData(Picture.FormatJPEG, 80)
dim sql as string = "Insert into BlobTest(name, image) values (:name, :image)"
dim cmd as new SQLCommandMBS(con, sql)
cmd.Param("name").setAsString "logo.jpg"
cmd.Param("image").setAsBlob jpegData
cmd.Execute
// query
cmd = new SQLCommandMBS(Con, "SELECT * FROM BlobTest")
cmd.Execute
while cmd.FetchNext
dim Data as string = cmd.Field("image").asBLobString
dim name as string = cmd.Field("name").asStringValue
dim ID as string = cmd.Field("id").asStringValue
dim w as new PicWindow
w.Backdrop = picture.FromData(data)
w.Title = name+" "+ID
w.show
wend
// Disconnect is optional
// autodisconnect will ocur in destructor if needed
con.Disconnect
catch r as RuntimeException
MsgBox r.message
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
// on error rollback changes
con.Rollback
catch rr as runtimeexception
MsgBox rr.message
end try
end try
End EventHandler
End Class
Class PicWindow Inherits Window
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
End Project
See also:
- /SQL/SQLite Benchmark vs REALSQLDatabase
- /SQL/SQLite Connect in Memory Database
- /SQL/SQLite Display Schema
- /SQL/SQLite ExecuteSQL
- /SQL/SQLite Fetch rows bulk
- /SQL/SQLite Fetch values with Recordset
- /SQL/SQLite select version
- /SQL/SQLite Unicode test
- /SQL/SQLite Version
- /SQL/SQLite Write blob to file
The items on this page are in the following plugins: MBS SQL Plugin.