C#連接SQLite其實和連接MSSQL基本是一樣的。但是連接SQLite需要下載一個DLL文件。鏈接:http://pan.baidu.com/s/1hr5Goio 密碼:rqyi
下載這個DLL文件后,引入並引用(這個就不需要我教如何引入和引用了吧?不懂就百度~)
接下來,我們編輯配置文件。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <!--填入數據庫文件的路徑即可,這里我們放在debug目錄下,所有只需要直接寫入文件名dbdemos.db3--> <add name="SQLiteDB" connectionString="Data Source=dbdemos.db3"/> </connectionStrings> </configuration>
然后我們來編寫一個SQLiteHelper的類。這個類封裝了增刪查改的方法。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.IO; using System.Data.SQLite; namespace WindowsFormsApplication1 { public static class SQLiteHelper { //需要添加引用--框架,System.Configuration,添加再using,用來讀取配置文件的數據庫鏈接字符串 private static string conStr = ConfigurationManager.ConnectionStrings["SQLiteDB"].ConnectionString; // private static readonly string conStr = ConfigurationManager.ConnectionStrings["mssql"].ConnectionString; /// <summary> /// 封裝增加、刪、改方法,方法名可以隨便寫,但是為了方便查看,用了和SqlCommand類一一樣的方法名 /// </summary> /// <param name="sql">SQL語句</param> /// <param name="pms">SQL參數,因為不知道會有多少個參數,所以用可變參數params</param> /// <returns>受影響的行數</returns> public static int ExecuteNonQuery(string sql, params SQLiteParameter[] pms) { using (SQLiteConnection conn = new SQLiteConnection(conStr)) { using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)) { if (pms != null) { cmd.Parameters.AddRange(pms); } try { conn.Open(); } catch { throw; } return cmd.ExecuteNonQuery(); } } } /// <summary> /// 查詢單個結果,一般和聚合函數 一起使用 /// </summary> /// <param name="sql">查詢的SQL語句</param> /// <param name="pms">SQL參數</param> /// <returns>返回查詢對象,查詢結果第一行第一列</returns> public static object ExecuteScalar(string sql, params SQLiteParameter[] pms) { using (SQLiteConnection conn = new SQLiteConnection(conStr)) { using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)) { if (pms != null) { cmd.Parameters.AddRange(pms); } try { conn.Open(); } catch { throw; } return cmd.ExecuteScalar(); } } } /// <summary> /// 查詢多行 /// </summary> /// <param name="sql">SQL語句</param> /// <param name="pms">SQL參數</param> /// <returns>返回SqlDataReader對象</returns> public static SQLiteDataReader ExcuteReader(string sql, params SQLiteParameter[] pms) { //這里不能用using,不然在返回SqlDataReader時候會報錯,因為返回時候已經在using中關閉了。 //事實上,在使用數據庫相關類中,SqlConnection是必須關閉的,但是其他可以選擇關閉,因為CG回自動回收 SQLiteConnection conn = new SQLiteConnection(conStr); using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)) { if (pms != null) { cmd.Parameters.AddRange(pms); } try { conn.Open(); //傳入System.Data.CommandBehavior.CloseConnection枚舉是為了讓在外面使用完畢SqlDataReader后,只要關閉了SqlDataReader就會關閉對應的SqlConnection return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } catch { conn.Close(); conn.Dispose(); throw; } } } } }
然后就可以通過這個類來對SQLite數據庫經常操作了。具體如何使用,也是很簡單的,例如,
private void button4_Click(object sender, EventArgs e) { SQLiteDataReader sdr = SQLiteHelper.ExcuteReader("select * from animals"); List<animals> list = new List<animals>(); if (sdr.HasRows) { while (sdr.Read()) { animals a = new animals(); a.NAME = sdr[0].ToString(); a.SIZE = sdr[1].ToString(); a.WEIGHT = sdr[2].ToString(); a.AREA = sdr[3].ToString(); a.BMP = sdr[4].ToString(); list.Add(a); } } this.dataGridView1.DataSource = list; }
其實,不管是什么數據庫,用法基本上是一樣的。這里可以看一下筆者以前寫過的C#鏈接MSSQL。我們可以看到,基本就是把i前綴SQL換成SQLite