@@ -49,24 +49,24 @@ Public Const SQLITE_ROW As Long = 100 ' sqlite3_step() has another row r
4949Public Const SQLITE_DONE As Long = 101 ' sqlite3_step() has finished executing
5050
5151' Extended error codes
52- '#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
53- '#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
54- '#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
55- '#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
56- '#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
57- '#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
58- '#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
59- '#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
60- '#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
61- '#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
62- '#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
63- '#define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8))
64- '#define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13<<8))
65- '#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8))
66- '#define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15<<8))
67- '#define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8))
68- '#define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8))
69- '#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8) )
52+ Public Const SQLITE_IOERR_READ As Long = 266 ' (SQLITE_IOERR | (1<<8))
53+ Public Const SQLITE_IOERR_SHORT_READ As Long = 522 ' (SQLITE_IOERR | (2<<8))
54+ Public Const SQLITE_IOERR_WRITE As Long = 778 ' (SQLITE_IOERR | (3<<8))
55+ Public Const SQLITE_IOERR_FSYNC As Long = 1034 ' (SQLITE_IOERR | (4<<8))
56+ Public Const SQLITE_IOERR_DIR_FSYNC As Long = 1290 ' (SQLITE_IOERR | (5<<8))
57+ Public Const SQLITE_IOERR_TRUNCATE As Long = 1546 ' (SQLITE_IOERR | (6<<8))
58+ Public Const SQLITE_IOERR_FSTAT As Long = 1802 ' (SQLITE_IOERR | (7<<8))
59+ Public Const SQLITE_IOERR_UNLOCK As Long = 2058 ' (SQLITE_IOERR | (8<<8))
60+ Public Const SQLITE_IOERR_RDLOCK As Long = 2314 ' (SQLITE_IOERR | (9<<8))
61+ Public Const SQLITE_IOERR_DELETE As Long = 2570 ' (SQLITE_IOERR | (10<<8))
62+ Public Const SQLITE_IOERR_BLOCKED As Long = 2826 ' (SQLITE_IOERR | (11<<8))
63+ Public Const SQLITE_IOERR_NOMEM As Long = 3082 ' (SQLITE_IOERR | (12<<8))
64+ Public Const SQLITE_IOERR_ACCESS As Long = 3338 ' (SQLITE_IOERR | (13<<8))
65+ Public Const SQLITE_IOERR_CHECKRESERVEDLOCK As Long = 3594 ' (SQLITE_IOERR | (14<<8))
66+ Public Const SQLITE_IOERR_LOCK As Long = 3850 ' (SQLITE_IOERR | (15<<8))
67+ Public Const SQLITE_IOERR_CLOSE As Long = 4106 ' (SQLITE_IOERR | (16<<8))
68+ Public Const SQLITE_IOERR_DIR_CLOSE As Long = 4362 ' (SQLITE_IOERR | (17<<8))
69+ Public Const SQLITE_LOCKED_SHAREDCACHE As Long = 265 ' (SQLITE_LOCKED | (1<<8) )
7070
7171' Options for Text and Blob binding
7272Private Const SQLITE_STATIC As Long = 0
@@ -139,6 +139,14 @@ Private Declare Function sqlite3_stdcall_bind_text16 Lib "SQLite3_StdCall" Alias
139139Private Declare Function sqlite3_stdcall_bind_value Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_bind_value@12" (ByVal hStmt As Long , ByVal paramIndex As Long , ByVal pSqlite3Value As Long ) As Long
140140Private Declare Function sqlite3_stdcall_clear_bindings Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_clear_bindings@4" (ByVal hStmt As Long ) As Long
141141
142+ 'Backup
143+ Private Declare Function sqlite3_stdcall_sleep Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_sleep@4" (ByVal msToSleep As Long ) As Long
144+ Private Declare Function sqlite3_stdcall_backup_init Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_backup_init@16" (ByVal hDbDest As Long , ByVal zDestName As Long , ByVal hDbSource As Long , ByVal zSourceName As Long ) As Long
145+ Private Declare Function sqlite3_stdcall_backup_step Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_backup_step@8" (ByVal hBackup As Long , ByVal nPage As Long ) As Long
146+ Private Declare Function sqlite3_stdcall_backup_finish Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_backup_finish@4" (ByVal hBackup As Long ) As Long
147+ Private Declare Function sqlite3_stdcall_backup_remaining Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_backup_remaining@4" (ByVal hBackup As Long ) As Long
148+ Private Declare Function sqlite3_stdcall_backup_pagecount Lib "SQLite3_StdCall " Alias "_sqlite3_stdcall_backup_pagecount@4" (ByVal hBackup As Long ) As Long
149+
142150'=====================================================================================
143151' Initialize - load libraries explicitly
144152Private hSQLiteLibrary As Long
@@ -188,46 +196,46 @@ End Function
188196'=====================================================================================
189197' Database connections
190198
191- Public Function SQLite3Open (ByVal FileName As String , ByRef DbHandle As Long ) As Long
192- SQLite3Open = sqlite3_stdcall_open16(StrPtr(FileName), DbHandle )
199+ Public Function SQLite3Open (ByVal FileName As String , ByRef dbHandle As Long ) As Long
200+ SQLite3Open = sqlite3_stdcall_open16(StrPtr(FileName), dbHandle )
193201End Function
194202
195- Public Function SQLite3Close (ByVal DbHandle As Long ) As Long
196- SQLite3Close = sqlite3_stdcall_close(DbHandle )
203+ Public Function SQLite3Close (ByVal dbHandle As Long ) As Long
204+ SQLite3Close = sqlite3_stdcall_close(dbHandle )
197205End Function
198206
199207'=====================================================================================
200208' Error information
201209
202- Public Function SQLite3ErrMsg (ByVal DbHandle As Long ) As String
203- SQLite3ErrMsg = Utf8PtrToString(sqlite3_stdcall_errmsg(DbHandle ))
210+ Public Function SQLite3ErrMsg (ByVal dbHandle As Long ) As String
211+ SQLite3ErrMsg = Utf8PtrToString(sqlite3_stdcall_errmsg(dbHandle ))
204212End Function
205213
206- Public Function SQLite3ErrCode (ByVal DbHandle As Long ) As Long
207- SQLite3ErrCode = Utf8PtrToString( sqlite3_stdcall_errcode(DbHandle) )
214+ Public Function SQLite3ErrCode (ByVal dbHandle As Long ) As Long
215+ SQLite3ErrCode = sqlite3_stdcall_errcode(dbHandle )
208216End Function
209217
210- Public Function SQLite3ExtendedErrCode (ByVal DbHandle As Long ) As Long
211- SQLite3ExtendedErrCode = Utf8PtrToString( sqlite3_stdcall_extended_errcode(DbHandle) )
218+ Public Function SQLite3ExtendedErrCode (ByVal dbHandle As Long ) As Long
219+ SQLite3ExtendedErrCode = sqlite3_stdcall_extended_errcode(dbHandle )
212220End Function
213221
214222'=====================================================================================
215223' Change Counts
216224
217- Public Function SQLite3Changes (ByVal DbHandle As Long ) As Long
218- SQLite3Changes = sqlite3_stdcall_changes(DbHandle )
225+ Public Function SQLite3Changes (ByVal dbHandle As Long ) As Long
226+ SQLite3Changes = sqlite3_stdcall_changes(dbHandle )
219227End Function
220228
221- Public Function SQLite3TotalChanges (ByVal DbHandle As Long ) As Long
222- SQLite3TotalChanges = sqlite3_stdcall_total_changes(DbHandle )
229+ Public Function SQLite3TotalChanges (ByVal dbHandle As Long ) As Long
230+ SQLite3TotalChanges = sqlite3_stdcall_total_changes(dbHandle )
223231End Function
224232
225233'=====================================================================================
226234' Statements
227235
228- Public Function SQLite3PrepareV2 (ByVal DbHandle As Long , ByVal Sql As String , ByRef stmtHandle As Long ) As Long
236+ Public Function SQLite3PrepareV2 (ByVal dbHandle As Long , ByVal sql As String , ByRef stmtHandle As Long ) As Long
229237 ' Only the first statement (up to ';') is prepared. Currently we don't retrieve the 'tail' pointer.
230- SQLite3PrepareV2 = sqlite3_stdcall_prepare16_v2(DbHandle , StrPtr(Sql ), Len(Sql ) * 2 , stmtHandle, 0 )
238+ SQLite3PrepareV2 = sqlite3_stdcall_prepare16_v2(dbHandle , StrPtr(sql ), Len(sql ) * 2 , stmtHandle, 0 )
231239End Function
232240
233241Public Function SQLite3Step (ByVal stmtHandle As Long ) As Long
@@ -315,6 +323,36 @@ Public Function SQLite3ClearBindings(ByVal stmtHandle As Long) As Long
315323End Function
316324
317325
326+ '=====================================================================================
327+ ' Backup
328+ Public Function SQLite3Sleep (ByVal timeToSleepInMs As Long ) As Long
329+ SQLite3Sleep = sqlite3_stdcall_sleep(timeToSleepInMs)
330+ End Function
331+
332+ Public Function SQLite3BackupInit (ByVal dbHandleDestination As Long , ByVal destinationName As String , ByVal dbHandleSource As Long , ByVal sourceName As String ) As Long
333+ Dim bufDestinationName() As Byte
334+ Dim bufSourceName() As Byte
335+ bufDestinationName = StringToUtf8Bytes(destinationName)
336+ bufSourceName = StringToUtf8Bytes(sourceName)
337+ SQLite3BackupInit = sqlite3_stdcall_backup_init(dbHandleDestination, VarPtr(bufDestinationName(0 )), dbHandleSource, VarPtr(bufSourceName(0 )))
338+ End Function
339+
340+ Public Function SQLite3BackupFinish (ByVal backupHandle As Long ) As Long
341+ SQLite3BackupFinish = sqlite3_stdcall_backup_finish(backupHandle)
342+ End Function
343+
344+ Public Function SQLite3BackupStep (ByVal backupHandle As Long , ByVal numberOfPages) As Long
345+ SQLite3BackupStep = sqlite3_stdcall_backup_step(backupHandle, numberOfPages)
346+ End Function
347+
348+ Public Function SQLite3BackupPageCount (ByVal backupHandle As Long ) As Long
349+ SQLite3BackupPageCount = sqlite3_stdcall_backup_pagecount(backupHandle)
350+ End Function
351+
352+ Public Function SQLite3BackupRemaining (ByVal backupHandle As Long ) As Long
353+ SQLite3BackupRemaining = sqlite3_stdcall_backup_remaining(backupHandle)
354+ End Function
355+
318356' String Helpers
319357Function Utf8PtrToString (ByVal pUtf8String As Long ) As String
320358 Dim buf As String
@@ -334,7 +372,7 @@ Function Utf8PtrToString(ByVal pUtf8String As Long) As String
334372 End If
335373End Function
336374
337- Function StringToUtf8Bytes (ByVal str As String ) As Byte ()
375+ Function StringToUtf8Bytes (ByVal str As String ) As Variant
338376 Dim bSize As Long
339377 Dim RetVal As Long
340378 Dim buf() As Byte
0 commit comments