using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Data.SQLite; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Pcb.Common { ///源码下载地址:http://download.csdn.net/detail/kehaigang29/8836171 ///dll下载地址:http://download.csdn.net/detail/kehaigang29/8837257 /// /// 本类为SQLite数据库帮助静态类,使用时只需直接调用即可,无需实例化 /// public static class SQLiteHelper { /// /// 数据库连接字符串 /// //public static string connectionString = "Data Source=" + ConfigurationManager.AppSettings["SQLite"]; //public static void InitDataBase(string pathAppSet) //{ // if (!string.IsNullOrWhiteSpace(pathAppSet)) // { // connectionString = "Data Source=" + ConfigurationManager.AppSettings[pathAppSet]; // } //} #region 执行数据库操作(新增、更新或删除),返回影响行数 /// /// 执行数据库操作(新增、更新或删除) /// /// SqlCommand对象 /// 所受影响的行数 public static int ExecuteNonQuery(SQLiteCommand cmd, string connectionString) { int result = 0; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); using (SQLiteConnection con = new SQLiteConnection(connectionString)) { SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText); try { result = cmd.ExecuteNonQuery(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } return result; } /// /// 执行数据库操作(新增、更新或删除) /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// 所受影响的行数 public static int ExecuteNonQuery(string commandText, string connectionString, CommandType commandType = CommandType.Text) { int result = 0; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); SQLiteCommand cmd = new SQLiteCommand(); using (SQLiteConnection con = new SQLiteConnection(connectionString)) { SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, true, commandType, commandText); try { result = cmd.ExecuteNonQuery(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } return result; } /// /// 执行数据库操作(新增、更新或删除) /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// SQL参数对象 /// 所受影响的行数 public static int ExecuteNonQuery(string commandText, string connectionString, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms) { int result = 0; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); SQLiteCommand cmd = new SQLiteCommand(); using (SQLiteConnection con = new SQLiteConnection(connectionString)) { SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, true, commandType, commandText, cmdParms); try { result = cmd.ExecuteNonQuery(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } return result; } #endregion #region 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据 /// /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据 /// /// SqlCommand对象 /// 查询所得的第1行第1列数据 public static object ExecuteScalar(SQLiteCommand cmd, string connectionString) { object result = 0; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); using (SQLiteConnection con = new SQLiteConnection(connectionString)) { SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText); try { result = cmd.ExecuteScalar(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } return result; } /// /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// 查询所得的第1行第1列数据 public static object ExecuteScalar(string commandText, string connectionString, CommandType commandType = CommandType.Text) { object result = 0; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); SQLiteCommand cmd = new SQLiteCommand(); using (SQLiteConnection con = new SQLiteConnection(connectionString)) { SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, true, commandType, commandText); try { result = cmd.ExecuteScalar(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } return result; } /// /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// SQL参数对象 /// 查询所得的第1行第1列数据 public static object ExecuteScalar(string commandText, string connectionString, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms) { object result = 0; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); SQLiteCommand cmd = new SQLiteCommand(); using (SQLiteConnection con = new SQLiteConnection(connectionString)) { SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, true, commandType, commandText, cmdParms); try { result = cmd.ExecuteScalar(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } return result; } #endregion #region 执行数据库查询,返回SqlDataReader对象 /// /// 执行数据库查询,返回SqlDataReader对象 /// /// SqlCommand对象 /// SqlDataReader对象 public static DbDataReader ExecuteReader(SQLiteCommand cmd, string connectionString) { DbDataReader reader = null; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText); try { reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception ex) { throw ex; } return reader; } /// /// 执行数据库查询,返回SqlDataReader对象 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// SqlDataReader对象 public static DbDataReader ExecuteReader(string commandText, string connectionString, CommandType commandType = CommandType.Text) { DbDataReader reader = null; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, commandType, commandText); try { reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception ex) { throw ex; } return reader; } /// /// 执行数据库查询,返回SqlDataReader对象 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// SQL参数对象 /// SqlDataReader对象 public static DbDataReader ExecuteReader(string commandText, string connectionString, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms) { DbDataReader reader = null; if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms); try { reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception ex) { throw ex; } return reader; } #endregion #region 执行数据库查询,返回DataSet对象 /// /// 执行数据库查询,返回DataSet对象 /// /// SqlCommand对象 /// DataSet对象 public static DataSet ExecuteDataSet(SQLiteCommand cmd, string connectionString) { DataSet ds = new DataSet(); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText); try { SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd); sda.Fill(ds); } catch (Exception ex) { throw ex; } finally { if (cmd.Connection != null) { if (cmd.Connection.State == ConnectionState.Open) { cmd.Connection.Close(); } } } return ds; } /// /// 执行数据库查询,返回DataSet对象 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// DataSet对象 public static DataSet ExecuteDataSet(string commandText, string connectionString, CommandType commandType = CommandType.Text) { if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); DataSet ds = new DataSet(); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, commandType, commandText); try { SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd); sda.Fill(ds); } catch (Exception ex) { throw ex; } finally { if (con != null) { if (con.State == ConnectionState.Open) { con.Close(); } } } return ds; } /// /// 执行数据库查询,返回DataSet对象 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// SQL参数对象 /// DataSet对象 public static DataSet ExecuteDataSet(string commandText, string connectionString, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms) { if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); DataSet ds = new DataSet(); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms); try { SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd); sda.Fill(ds); } catch (Exception ex) { throw ex; } finally { if (con != null) { if (con.State == ConnectionState.Open) { con.Close(); } } } return ds; } #endregion #region 执行数据库查询,返回DataTable对象 /// /// 执行数据库查询,返回DataTable对象 /// /// 执行语句或存储过程名 /// 执行类型(默认语句) /// DataTable对象 public static DataTable ExecuteDataTable(string commandText, string connectionString, CommandType commandType = CommandType.Text) { if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); DataTable dt = new DataTable(); SQLiteConnection con = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, commandType, commandText); try { SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd); sda.Fill(dt); } catch (Exception ex) { throw ex; } finally { if (con != null) { if (con.State == ConnectionState.Open) { con.Close(); } } } return dt; } #endregion #region 通用分页查询方法 /// /// 通用分页查询方法 /// /// 表名 /// 查询字段名 /// where条件 /// 排序条件 /// 每页数据数量 /// 当前页数 /// 数据总量 /// DataTable数据表 public static DataTable SelectPaging(string tableName, string strColumns, string strWhere, string strOrder, int pageSize, int currentIndex, string connectionString, out int recordOut) { DataTable dt = new DataTable(); recordOut = Convert.ToInt32(ExecuteScalar("select count(*) from " + tableName, connectionString, CommandType.Text)); string pagingTemplate = "select {0} from {1} where {2} order by {3} limit {4} offset {5} "; int offsetCount = (currentIndex - 1) * pageSize; string commandText = String.Format(pagingTemplate, strColumns, tableName, strWhere, strOrder, pageSize.ToString(), offsetCount.ToString()); using (DbDataReader reader = ExecuteReader(commandText, connectionString, CommandType.Text)) { if (reader != null) { dt.Load(reader); } } return dt; } #endregion #region 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化 /// /// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化 /// /// Command对象 /// Connection对象 /// Transcation对象 /// 是否使用事务 /// SQL字符串执行类型 /// SQL Text /// SQLiteParameters to use in the command private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, ref SQLiteTransaction trans, bool useTrans, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (useTrans) { trans = conn.BeginTransaction(IsolationLevel.ReadCommitted); cmd.Transaction = trans; } cmd.CommandType = cmdType; if (cmdParms != null) { foreach (SQLiteParameter parm in cmdParms) cmd.Parameters.Add(parm); } } #endregion } }