2008-09-16

SQLite + Visual Studio 2005

SQLite 是一套 Embedded RDBMS,很適合加進 App 裡頭跟著跑,並且資料庫檔能輕鬆跨平台。關於其它 SQLite 的優點,可以 Google 大神或 Wikipedia 取得。或許效能與支援度未能與其它 DBMS 相比,但你總不會想為了暫存 Spore 裡的建築方式,去安裝這些巨獸吧 XD


參考這篇討論串的作法,我下載了 SQLite for ADO.Net 2.0,目前使用正常 XD

底下簡述安裝及使用方式,作個記錄備查:
  1. 下載並解壓縮前面的 SQLite for ADO.Net 2.0 檔案
  2. 安裝 bin\Designer\install.exe,以提供設計階段的 VS.Net IDE支援
  3. 在方案中,加入對 bin\System.Data.SQLite.DLL 的參考
  4. 可以用了 !
下面是簡單的使用範例,語言為 Visual Basic.Net


Imports System.Data.SQLite

' ADO.Net 標準 Reader 三物件
Dim slconn As SQLiteConnection
Dim slcmd As SQLiteCommand
Dim slrdr As SQLiteDataReader

'建立 connection,給定檔名即可。注意讀寫權限 !
slconn = New SQLiteConnection("Data Source=c:\backup\Test.db3")
slconn.Open()
slcmd = slconn.CreateCommand() '建立 command 物件

'取得目前該檔案已有之 Table 名稱
Dim found as Boolean = False
slcmd.CommandText = "SELECT name FROM sqlite_master WHERE type='table';"
slrdr = slcmd.ExecuteReader() '建立 reader 物件
If slrdr.HasRows Then
While slrdr.Read()
MsgBox(If slrdr.GetString(0))
If slrdr.GetString(0).Equals("test") then found = True

End While
slrdr.Close() 'Reader 要關閉才能再利用

End If

If Not found Then
'建立 Table
slcmd.CommandText = "CREATE TABLE test (name);"
slcmd.ExecuteNonQuery()

End If

'INSERT, UPDATE, DELETE 用法均類似
slcmd.CommandText = "INSERT INTO test(name) VALUES ('clifflu');"
slcmd.ExecuteNonQuery()

'SELECT 需要用 cmd.ExecuteReader 抓結果
slcmd.CommandText = "SELECT name FROM test ;"
slrdr = slcmd.ExecuteReader()
If slrdr.HasRows() Then
While slrdr.Read()
Msgbox(slrdr.GetString(0))
End While
slrdr.Close()

End If

slconn.Close() 'Connection 用完要關

沒有留言: