SQLite是一款小巧的數據庫,功能強大但占用資源卻非常的低,非常適合小型的應用,或者嵌入式的開發中,本文將說明一些在WPF項目中使用SQLite將會遇到的問題:
首先需要在項目中添加對SQLite的引用:
以下是一些操作sqlite數據庫的方法:
SQLiteConnection _connection; /// <summary> /// SQLite連接 /// </summary> SQLiteConnection connection { get { if (_connection == null) { _connection = new SQLiteConnection(string.Format("Data Source={0}/DB/DB.db3;Version=3;", AppDomain.CurrentDomain.SetupInformation.ApplicationBase)); _connection.Open(); } return _connection; } } /// <summary> /// SQLite增刪改 /// </summary> /// <param name="sql">要執行的sql語句</param> /// <param name="parameters">所需參數</param> /// <returns>所受影響的行數</returns> int ExecuteNonQuery(string sql, SQLiteParameter[] parameters) { int affectedRows = 0; DbTransaction transaction = connection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(connection); command.CommandText = sql; if (parameters != null) { command.Parameters.AddRange(parameters); } affectedRows = command.ExecuteNonQuery(); transaction.Commit(); return affectedRows; } /// <summary> /// SQLite查詢 /// </summary> /// <param name="sql">要執行的sql語句</param> /// <param name="parameters">所需參數</param> /// <returns>結果DataTable</returns> DataTable ExecuteDataTable(string sql, SQLiteParameter[] parameters) { DataTable data = new DataTable(); SQLiteCommand command = new SQLiteCommand(sql, connection); if (parameters != null) { command.Parameters.AddRange(parameters); } SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); adapter.Fill(data); return data; } /// <summary> /// 查詢數據庫表信息 /// </summary> /// <returns>數據庫表信息DataTable</returns> DataTable GetSchema() { DataTable data = new DataTable(); data = connection.GetSchema("TABLES"); return data; }
需要添加引用:
using System.Data.SQLite; using System.Data; using System.Data.Common;
本例中,使用了DB.db3這個文件作為SQLite數據文件的載體:
_connection = new SQLiteConnection(string.Format("Data Source={0}/DB/DB.db3;Version=3;", AppDomain.CurrentDomain.SetupInformation.ApplicationBase));
當然你也可以使用DataSet讀入內存后使用SQLite進行訪問,相關連接字符串修改如下:
_connection = new SQLiteDBHelper(":memory:");
WPF使用的是.net 4.0 的框架,而引用的SQLite.dll 很有可能是在.net 2.0下開發的,所以還需要設置.net 2.0 框架下程序運行時的激活策略:
添加App.config應用配置文件
在App.config文件中添加內容如下:
<?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> </configuration>