一种比较良好的操作方式是在程序中加载sqlite3.dll,然后操作数据库。使用的是litex提供的sqlite3.dll。
这样做的好处?那是显而易见的,因为程序动态的加载dll比注册dll更方便。我们所要体现的中心思想始终是最简单化的用户操作。而且就我个人而言,系统中注册了大量的dll本身也觉得缺少美感,如果系统重装那就什么都没了。不是吗?
然后我们需要的仅仅是使用LoadLibrary去加载一下。
使用LoadLibrary,我们必须先预定义LoadLibrary的方法,他是Windows API的一部分,需要进行预定义。
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
然后就很简单了。
Dim lb As Long
lb = LoadLibrary(App.Path & "\sqlite3.dll")
Dim oDB As Object
Set oDB = CreateObject("LiteX.LiteConnection")
TextSQLiteVersion.Text = oDB.Version
oDB.open (App.Path & "\test.db")
oDB.Execute ("insert into testtable values(2, 'laoma', 20)")
TextSQLiteChanges.Text = oDB.changes
TextSQLitePath.Text = oDB.Path
oDB.Close
我们使用sqlit3.dll里的第一个对象:LiteX.LliteConnection
Set oDB = CreateObject("LiteX.LiteConnection")
'oDB.Version----SQLite版本
oDB.open (App.Path & "\test.db")
oDB.Execute ( strsql )
'strsql 的执行可能会返回值和返回影响行数。
'原话是这样的:
'If query doesn't returns any result empty value is returned.
'If query returns one or more rows first row is returned as ROW property of statement object does.
’oDB.changes----SQLite里的表被改变的行数
‘oDB.Path----SQLite的安装路径
oDB.Close
新建表
Dim odb As Object
Set odb = CreateObject("LiteX.LiteConnection")
odb.open (App.Path & "\test.db") '一开始直接建一个空白文件就可以用了
sql = "create table tab01(name text,nl integar)" 'sqlite数据库其实可以不用定义,但是为了以后的转移或者说明,定义下比较方便
odb.execute(sql)
odb.close
插入数据
Dim odb As Object
Set odb = CreateObject("LiteX.LiteConnection")
odb.open (App.Path & "\test.db")
sql = "insert into tab01 values('chen',5)"
odb.execute(sql)
odb.close
查询
Dim rs As Object
Set odb = CreateObject("LiteX.LiteConnection")
odb.open (App.Path & "\test.db")
Dim rs As Object
Set rs = CreateObject("LiteX.LiteStatement")
rs.ActiveConnection = odb
Call rs.Prepare(sql)
rs.Step
' 如果有记录
If Not rs.Done Then
' 循环读取记录
Do While Not rs.Done
' 显示记录
MsgBox rs.ColumnValue(0)
' 游标下移下条数据
rs.Step
Loop
End If
rs.close 'prepare方法只能用一次,第二次用之前要关闭一下odb1,或者每用完一次就养成顺手关的好习惯
odb.close