电竞比分网-中国电竞赛事及体育赛事平台

分享

vb+SQLite學(xué)習(xí)記錄

 戰(zhàn)神之家 2014-03-08

參照學(xué)習(xí):

http://www./sqlite.html

http://hi.baidu.com/jt09/blog/item/35f557ae27245cc77dd92aae.html

 

文章1(還沒(méi)有來(lái)得及測(cè)試)

編程前要先注冊(cè)一下sqlite,使用的是litex的編譯版本,是sqlite3.5.7的版本
regsvr32 sqlite3.dll
隨便是建一個(gè)bat文件運(yùn)行,還是直接在開(kāi)始菜單運(yùn)行都可以
壓縮文件包中有自動(dòng)注冊(cè)bat文件,sqlite3.dll,測(cè)試數(shù)據(jù)庫(kù),litex開(kāi)發(fā)文檔(英文)


新建表
Dim odb As Object
Set odb = CreateObject("LiteX.LiteConnection")
odb.open (App.Path & "\test.db")    '一開(kāi)始直接建一個(gè)空白文件就可以用了

sql = "create table tab01(name text,nl integar)"   'sqlite數(shù)據(jù)庫(kù)其實(shí)可以不用定義,但是為了以后的轉(zhuǎn)移或者說(shuō)明,定義下比較方便
odb.execute(sql)
odb.close


插入數(shù)據(jù)
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

查詢(xún)
Dim odb As Object
Set odb = CreateObject("LiteX.LiteConnection")
odb.open (App.Path & "\test.db")

Dim odb1 As Object
Set odb1 = CreateObject("LiteX.LiteStatement")
odb1.ActiveConnection = odb

label1=""
sql = "select * from tab01"
odb1.prepare (sql)

   For Each row In odb1.rows   '用.rows屬性取出預(yù)查詢(xún)的數(shù)據(jù),插入到label1里面
   Label1 = Label1 & row(0) & "   " & row(1) & vbCrLf   '在這個(gè)其中row實(shí)際上為一個(gè)數(shù)組,下標(biāo)從0開(kāi)始
   Next

odb1.close
odb.close

'文檔上說(shuō)odb1這個(gè)狀態(tài)變量可以直接用odb的prepare方法直接創(chuàng)建,但是我試了下,不知道為什么報(bào)錯(cuò),所以改成手工定義,都一樣,就是麻煩點(diǎn)
'本來(lái)不知道應(yīng)該怎么定義row這個(gè)變量,在說(shuō)明文檔上被稱(chēng)為L(zhǎng)iteX.LiteRow。后來(lái)試了下,可以定義為Variant,使用過(guò)程中沒(méi)問(wèn)題。
'本來(lái)想在程序中動(dòng)態(tài)加載dll文件,也在網(wǎng)上找到動(dòng)態(tài)加載的代碼,但是不知道為什么報(bào)錯(cuò),所以直接改成提前注冊(cè)了

 

文章2(測(cè)試沒(méi)有搞定,還需要繼續(xù)努力研究)

vb6.0操作SQLite數(shù)據(jù)庫(kù)之一(動(dòng)態(tài)加載sqlite3.dll)

http://hi.baidu.com/gantianamin2001/blog/item/d8bf952aba2eb99f033bf6d6.html

 

 

一種比較良好的操作方式是在程序中加載sqlite3.dll,然后操作數(shù)據(jù)庫(kù)。使用的是litex提供的sqlite3.dll。

這樣做的好處?那是顯而易見(jiàn)的,因?yàn)槌绦騽?dòng)態(tài)的加載dll比注冊(cè)dll更方便。我們所要體現(xiàn)的中心思想始終是最簡(jiǎn)單化的用戶(hù)操作。而且就我個(gè)人而言,系統(tǒng)中注冊(cè)了大量的dll本身也覺(jué)得缺少美感,如果系統(tǒng)重裝那就什么都沒(méi)了。不是嗎?

然后我們需要的僅僅是使用LoadLibrary去加載一下。
使用LoadLibrary,我們必須先預(yù)定義LoadLibrary的方法,他是Windows API的一部分,需要進(jìn)行預(yù)定義。

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

然后就很簡(jiǎn)單了。

    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

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多