:memory:-Database-Dump (fast and easy)
Posted: Thu Oct 13, 2011 9:01 am
Hello,
here is a code-snippet to dump a SQLite-:memory:-Database to disk:
Greetings ... Kiffi
here is a code-snippet to dump a SQLite-:memory:-Database to disk:
Code: Select all
EnableExplicit
ImportC "sqlite3.lib"
sqlite3_backup_init(pDest, zDestName.p-utf8, pSource, zSourceName.p-utf8)
sqlite3_backup_step(sqlite3_backup, nPage)
sqlite3_backup_finish(sqlite3_backup)
sqlite3_errcode(db)
EndImport
UseSQLiteDatabase()
Define DbMem
Define DbFile
Define Counter
Define FF
Define Backup
Define RC
; Create Sample-:memory:-Database:
DbMem = OpenDatabase(#PB_Any, ":memory:", "", "", #PB_Database_SQLite)
If DbMem
; insert test-data
DatabaseUpdate(DbMem, "Create Table TestTable (Field1, Field2, Field3)")
For Counter = 0 To 9999
DatabaseUpdate(DbMem, "Insert Into TestTable (Field1, Field2, Field3) Values (" + Str(Counter) + ", " + Str(Counter) + ", " + Str(Counter) + ")")
Next
; Create File-Database
FF = CreateFile(#PB_Any, GetTemporaryDirectory() + "temp.db")
If FF
CloseFile(FF)
DbFile = OpenDatabase(#PB_Any, GetTemporaryDirectory() + "temp.db", "", "", #PB_Database_SQLite)
If DbFile
; Initialize Backup:
BackUp = sqlite3_backup_init(DatabaseID(DbFile), "main", DatabaseID(DbMem), "main")
If BackUp
; Dump Data from :memory:-DB to File-DB
sqlite3_backup_step (Backup, -1)
sqlite3_backup_finish(Backup)
EndIf
Debug sqlite3_errcode(DatabaseID(DbFile)) ; ErrorCodes: see below
CloseDatabase(DbFile)
; RunProgram(GetTemporaryDirectory() + "temp.db") ; Open File-DB for checking purposes
EndIf
EndIf
EndIf
; #define SQLITE_OK 0 /* Successful result */
; /* beginning-of-error-codes */
; #define SQLITE_ERROR 1 /* SQL error Or missing database */
; #define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */
; #define SQLITE_PERM 3 /* Access permission denied */
; #define SQLITE_ABORT 4 /* Callback routine requested an abort */
; #define SQLITE_BUSY 5 /* The database file is locked */
; #define SQLITE_LOCKED 6 /* A table in the database is locked */
; #define SQLITE_NOMEM 7 /* A malloc() failed */
; #define SQLITE_READONLY 8 /* Attempt To write a readonly database */
; #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
; #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
; #define SQLITE_CORRUPT 11 /* The database disk image is malformed */
; #define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */
; #define SQLITE_FULL 13 /* Insertion failed because database is full */
; #define SQLITE_CANTOPEN 14 /* Unable To open the database file */
; #define SQLITE_PROTOCOL 15 /* Database lock protocol error */
; #define SQLITE_EMPTY 16 /* Database is empty */
; #define SQLITE_SCHEMA 17 /* The database schema changed */
; #define SQLITE_TOOBIG 18 /* String Or BLOB exceeds size limit */
; #define SQLITE_CONSTRAINT 19 /* Abort due To constraint violation */
; #define SQLITE_MISMATCH 20 /* Data type mismatch */
; #define SQLITE_MISUSE 21 /* Library used incorrectly */
; #define SQLITE_NOLFS 22 /* Uses OS features Not supported on host */
; #define SQLITE_AUTH 23 /* Authorization denied */
; #define SQLITE_FORMAT 24 /* Auxiliary database format error */
; #define SQLITE_RANGE 25 /* 2nd parameter To sqlite3_bind out of range */
; #define SQLITE_NOTADB 26 /* File opened that is Not a database file */
; #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
; #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
; /* End-of-error-codes */