1.關於Sqlite
Sqlite是一款開源的、適合在客戶端和嵌入式設備中使用的輕量級數據庫,支持標准的SQL。
不像SqlServer或Oracle的引擎是一個獨立的進程、通過TCP或命名管道等與程序進行通信,SQLite卻是作為程序的一個部件、一個構成部分,使用Sqlite的方式就是直接在程序中進行API調用。
2.Sqlite資源鏈接
Sqlite官網:可以從官網下載源碼、或下載已經編譯好的二進制版本。支持的系統包括:Linux、MacOS、Windows、.NET。
3.在.NET中使用Sqlite
從官網下載.NET版本的Sqlite,其主要包括兩個dll:SQLite.Interop.dll、System.Data.SQLite.dll。
(1)System.Data.SQLite.dll是一個標准的托管dll,我們可以直接在.NET項目中引用並使用它,就像使用.NET自帶的System.Data命名空間中的各個對象一樣。
(2)SQLite.Interop.dll是一個非托管的dll,是Sqlite引擎核心,我們需要將其拷貝到運行目錄下,在運行時,它會被System.Data.SQLite.dll調用。
4.Winform中使用SQLite
(1)可使用northwindEF.db測試數據庫,也可以新建一個數據庫。
(2)Winform界面:

使用ComboBox:cboTables加載數據庫表。
點擊OK,查詢選擇的表中的詳細信息顯示到DataGridView:grdDetail。
(3)代碼說明
Step 1. 添加引用
System.Data.SQLite
. 注意需要復制SQLite.Interop.dll至運行目錄下;
Step 2. 定義變量
public partial class Form1 : Form { SQLiteConnection mConn; SQLiteDataAdapter mAdapter; DataTable mTable; public Form1() { InitializeComponent(); } }
Step 3. 連接數據庫,並查找數據庫中表顯示到cboTables
private void Form1_Load(object sender, EventArgs e) { //連接數據庫. string mDbPath = Application.StartupPath + "/northwind.db"; //如果數據庫不存在,則自動創建. mConn = new SQLiteConnection("Data Source=" + mDbPath); //打開數據庫文件. mConn.Open(); //創建表[Test Table]. // id - Unique Counter - Key Field (Required in any table) // FirstName - Text // Age - Integer using (SQLiteCommand mCmd = new SQLiteCommand ("CREATE TABLE IF NOT EXISTS [Test Table] " + "(id INTEGER PRIMARY KEY AUTOINCREMENT, 'FirstName' TEXT, 'Age' INTEGER);", mConn)) { mCmd.ExecuteNonQuery(); } //獲取數據庫中表. //表 "Tables"中字段 "TABLE_NAME" 包含所有表名信息. using (DataTable mTables = mConn.GetSchema("Tables")) // "Tables"包含系統表詳細信息; { for (int i = 0; i < mTables.Rows.Count; i++) { cboTables.Items.Add(mTables.Rows[i].ItemArray[mTables.Columns.IndexOf("TABLE_NAME")].ToString()); } if (cboTables.Items.Count > 0) { cboTables.SelectedIndex = 0; // 默認選中第一張表. } } }
Step 4.
選擇cboTables中表名,點擊Ok,獲取該表詳細信息顯示到grdDetail中。
private void btnOk_Click(object sender, EventArgs e) { mAdapter = new SQLiteDataAdapter("SELECT * FROM [" + cboTables.Text + "]", mConn); mTable = new DataTable(); // Don't forget initialize! mAdapter.Fill(mTable); // 綁定數據到DataGridView grdDetail.DataSource = mTable; }