一、什麼是 SQLite 資料庫 SQLite 是嵌入式SQL資料庫引擎。與大多數其他 SQL 資料庫不同,SQLite 沒有單獨的伺服器進程。SQLite 直接讀取和寫入普通磁碟文件。具有多個表,索引,觸發器和視圖的完整 SQL 資料庫包含在單個磁碟文件中。資料庫文件格式是跨平臺的-您可以在32位 ...
一、什麼是 SQLite 資料庫
SQLite 是嵌入式SQL資料庫引擎。與大多數其他 SQL 資料庫不同,SQLite 沒有單獨的伺服器進程。SQLite 直接讀取和寫入普通磁碟文件。具有多個表,索引,觸發器和視圖的完整 SQL 資料庫包含在單個磁碟文件中。資料庫文件格式是跨平臺的-您可以在32位和64位系統之間或在big-endian和 little-endian 體繫結構之間自由複製資料庫 。這些功能使SQLite成為應用程式文件格式的流行選擇。
它還是一個本地資料庫,在本地生成一個資料庫文件,不需要藉助網路就能訪問。
二、SQLite 的下載安裝
官網下載地址:https://www.sqlite.org/download.html
找到你所對應的版本,我這裡以 windows 為例,下載 sqlite-tools-win32-x86-3390400.zip 和 sqlite-dll-win64-x64-3390400.zip 兩個文件,將文件解壓放置單獨的文件夾,解壓後一共是 5 個文件
然後在電腦的環境變數中去配置這個文件夾的路徑
到這一步,安裝和配置已經完成了,接下來就要驗證是否安裝成功了。打開 CMD 命令版,輸入 sqlite3,出現版本信息,則表示安裝成功
如果輸入出現提示 sqlite3 不是內部命令,那就是環境變數沒有生效,配置環境變數後要重新啟動電腦才能生效
三、SQLite在程式中使用
這裡以 .Net Framework 的項目為例演示
1、引用 SQLite 相關的包即可,NuGet 搜索 System.Data.SQLite ,點擊安裝,會自動下載所依賴的其他包
註意:不要在官網下載 System.Data.SQLite.dll ,如果你在官網下載這個 dll ,直接添加引用,運行代碼時會報錯 ,無法載入“DLL “SQLite.Interop.dll”:找不帶指定模塊”,很難解決
2、新建一個文本將文件擴展名改為 db ,這樣我們就能本地訪問這個資料庫
3、訪問查看 SQLite 資料庫,有多種方式
可以使用官方提供的工具 SQLiteStudio :https://sqlitestudio.pl/
也可以使用其他的資料庫鏈接工具(這裡使用的是 Navicat),如下,選擇連接資料庫的類型為 SQLite,添加鏈接,選擇現有的資料庫文件就行,不需要賬號和密碼
4、寫 SQLite 幫助類
我這裡寫的比較簡單,只有 3 個方法
因為 SQLite 可以本地讀取的資料庫,所以資料庫鏈接要寫成 絕對路徑,如:C:\資料庫\xx.db
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SQLite; 5 using System.Linq; 6 using System.Web; 7 8 namespace WebApplication1.DBhelper 9 { 10 public static class SqliteHelper 11 { 12 /// <summary> 13 /// 獲取連接字元串 14 /// </summary> 15 /// <returns>連接字元串</returns> 16 public static string GetSqlConnectionString() 17 { 18 //return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString; 19 return "data source=C:\\TestProject\\DB\\sqliteDb.db"; //xx.db 用絕對路徑 20 } 21 22 /// <summary> 23 /// 執行查詢語句,返回DataSet 24 /// </summary> 25 /// <param name="SQLString">查詢語句</param> 26 /// <returns>DataSet</returns> 27 public static DataSet GetDataSet(string SQLString) 28 { 29 using (SQLiteConnection connection = new SQLiteConnection(GetSqlConnectionString())) 30 { 31 DataSet ds = new DataSet(); 32 try 33 { 34 connection.Open(); 35 SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); 36 command.Fill(ds, "ds"); 37 } 38 catch (System.Data.SQLite.SQLiteException ex) 39 { 40 throw new Exception(ex.Message); 41 } 42 return ds; 43 } 44 } 45 46 /// <summary> 47 /// 執行查詢語句,返回DataTable 48 /// </summary> 49 /// <param name="SQLString"></param> 50 /// <returns></returns> 51 /// <exception cref="Exception"></exception> 52 public static DataTable GetDataTable(string SQLString) 53 { 54 using (SQLiteConnection connection = new SQLiteConnection(GetSqlConnectionString())) 55 { 56 DataTable dt = new DataTable(); 57 try 58 { 59 connection.Open(); 60 SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection); 61 command.Fill(dt); 62 } 63 catch (System.Data.SQLite.SQLiteException ex) 64 { 65 throw new Exception(ex.Message); 66 } 67 return dt; 68 } 69 } 70 71 /// <summary> 72 /// 執行操作語句,返回成功與否 73 /// </summary> 74 /// <param name="SQLString"></param> 75 /// <returns></returns> 76 public static bool RunSQL(string SQLString) 77 { 78 using (SQLiteConnection connection = new SQLiteConnection(GetSqlConnectionString())) 79 { 80 try 81 { 82 connection.Open(); 83 SQLiteCommand cmd = connection.CreateCommand(); 84 cmd.CommandText = SQLString; 85 cmd.ExecuteNonQuery(); 86 return true; 87 } 88 catch (Exception ex) 89 { 90 return false; 91 } 92 } 93 } 94 } 95 }View Code
那麼到這裡,SQLite 的安裝和使用已經結束了。如果你的項目中有部分數據是不需要存儲到線上伺服器,只需要留存在用戶本地的話,使用 SQLite 是個很好的選擇,根據項目實際情況而定。
比如,我在用戶使用輸入框時,保存了用戶的搜索記錄,下次用戶再搜索時,可將以往的記錄展示出來,雖然可以保存在緩存中,但是緩存容易丟失,使用 SQLite 只要資料庫文件還在,數據沒刪,隨時可以使用,而且性能也還不錯。