using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Data.SQLite; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Rs.DataAccess { public class SqliteHelper { //从配置文本中读取连接字符串 //public static string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString; private readonly static string connStr = "data source=./Config/config.db;version=3;"; private readonly SQLiteTransaction _sqLiteTransaction; private readonly SQLiteConnection _sqLiteConnection; private readonly bool _transaction; /// /// 构造函数(参数为true,将开启事务模式,否则开启常规模式) /// /// public SqliteHelper(bool transaction = false) { _transaction = transaction; if (transaction) { _sqLiteConnection = new SQLiteConnection(connStr); _sqLiteConnection.Open(); _sqLiteTransaction = _sqLiteConnection.BeginTransaction(); } } /// /// 返回受影响行数(适用:Insert/Update/Delete) /// /// /// /// public int ExecuteNonQuery(string sql, params SQLiteParameter[] ps) { if (_transaction) { var cmd = new SQLiteCommand(_sqLiteConnection) { CommandText = sql }; cmd.Parameters.AddRange(ps); cmd.Transaction = _sqLiteTransaction; return cmd.ExecuteNonQuery(); } else { var cnn = new SQLiteConnection(connStr); cnn.Open(); var mycommand = new SQLiteCommand(cnn) { CommandText = sql }; mycommand.Parameters.AddRange(ps); var rowsUpdated = mycommand.ExecuteNonQuery(); cnn.Close(); return rowsUpdated; } } /// /// 获取首行首列值的方法 /// /// /// /// public object ExecuteScalar(string sql, params SQLiteParameter[] ps) { if (_transaction) { var cmd = new SQLiteCommand(_sqLiteConnection) { CommandText = sql }; cmd.Parameters.AddRange(ps); cmd.Transaction = _sqLiteTransaction; var value = cmd.ExecuteScalar(); return value != null ? value.ToString() : ""; } else { var cnn = new SQLiteConnection(connStr); cnn.Open(); var mycommand = new SQLiteCommand(cnn) { CommandText = sql }; mycommand.Parameters.AddRange(ps); var value = mycommand.ExecuteScalar(); cnn.Close(); return value != null ? value.ToString() : ""; } } /// /// 获取结果集 /// /// /// /// public DataTable GetDataTable(string sql, params SQLiteParameter[] ps) { if (_transaction) { //构造适配器对象 var adapter = new SQLiteDataAdapter(sql, _sqLiteConnection); var dt = new DataTable(); adapter.SelectCommand.Parameters.AddRange(ps); adapter.Fill(dt); return dt; } else { using (SQLiteConnection conn = new SQLiteConnection(connStr)) { var adapter = new SQLiteDataAdapter(sql, conn); var dt = new DataTable(); adapter.SelectCommand.Parameters.AddRange(ps); adapter.Fill(dt); return dt; } } } /// /// 提交当前事务,并关闭链接。SQLiteTransaction, /// public void CommitTransaction() { _sqLiteTransaction.Commit(); _sqLiteTransaction.Dispose(); _sqLiteConnection.Close(); _sqLiteConnection.Dispose(); } } }