forked from EVEIPH/EVE-IPH
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDBConnection.vb
55 lines (40 loc) · 1.54 KB
/
DBConnection.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Imports System.Data.SQLite
<CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")>
Public Class DBConnection
Private DB As SQLiteConnection
Private Lock As New Object
Public Sub New(ByVal DBFileName As String)
DB = New SQLiteConnection
DB.ConnectionString = "Data Source=" & DBFileName & ";Version=3;"
DB.Open()
Call ExecuteNonQuerySQL("PRAGMA synchronous = NORMAL; PRAGMA locking_mode = NORMAL; PRAGMA cache_size = 10000; PRAGMA page_size = 4096; PRAGMA temp_store = DEFAULT; PRAGMA journal_mode = TRUNCATE; PRAGMA count_changes = OFF")
Call ExecuteNonQuerySQL("PRAGMA auto_vacuum = FULL;") ' Keep the DB small
End Sub
Public Sub CloseDB()
DB.Close()
DB.Dispose()
End Sub
Public Function DBREf() As SQLiteConnection
Return DB
End Function
Public Sub ExecuteNonQuerySQL(ByVal SQL As String)
Dim DBExecuteCmd As SQLiteCommand
ErrorTracker = SQL
SyncLock Lock
DBExecuteCmd = DB.CreateCommand
DBExecuteCmd.CommandText = SQL
DBExecuteCmd.ExecuteNonQuery()
DBExecuteCmd.Dispose()
End SyncLock
ErrorTracker = ""
End Sub
Public Sub BeginSQLiteTransaction()
Call ExecuteNonQuerySQL("BEGIN;")
End Sub
Public Sub CommitSQLiteTransaction()
Call ExecuteNonQuerySQL("END;")
End Sub
Public Sub RollbackSQLiteTransaction()
Call ExecuteNonQuerySQL("ROLLBACK;")
End Sub
End Class