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();
}
}
}