SQLite——WPF项目中的注意事项
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>