using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Community.DAL { public class SQLiteHelper { private static string _connStr = null; public static string DB { set; get; } /// /// ConnectionString样例:Datasource=Test.db3;Pooling=true;FailIfMissing=false /// public static string ConnectionString { get { if (string.IsNullOrEmpty(_connStr)) { _connStr = string.Format("Data Source={0};Version={1};", DB, 3); } return _connStr; } } /// /// 查询数据库中的所有数据类型信息。 /// public DataTable GetSchema() { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { if (conn.State != ConnectionState.Open) { conn.Open(); } return conn.GetSchema("TABLES"); } } private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, params SQLiteParameter[] parameters) { if (conn.State != ConnectionState.Open) { conn.Open(); } if (parameters != null && parameters.Length > 0) { cmd.Parameters.AddRange(parameters); } } public static DataSet ExecuteQuery(string cmdText, params SQLiteParameter[] parameters) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(cmdText, conn)) { PrepareCommand(cmd, conn, parameters); DataSet ds = new DataSet(); using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd)) { da.Fill(ds); } return ds; } } } public static DataTable GetDataTable(string cmdText, params SQLiteParameter[] parameters) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(cmdText, conn)) { PrepareCommand(cmd, conn, parameters); DataTable dt = new DataTable(); using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd)) { da.Fill(dt); } return dt; } } } public static int ExecuteNonQuery(string cmdText, params SQLiteParameter[] parameters) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(cmdText, conn)) { PrepareCommand(cmd, conn, parameters); return cmd.ExecuteNonQuery(); } } } public static SQLiteDataReader ExecuteReader(string cmdText, params SQLiteParameter[] parameters) { SQLiteConnection conn = new SQLiteConnection(ConnectionString); using (SQLiteCommand cmd = new SQLiteCommand(cmdText, conn)) { PrepareCommand(cmd, conn, parameters); return cmd.ExecuteReader(CommandBehavior.CloseConnection); } } public static object ExecuteScalar(string cmdText, params SQLiteParameter[] parameters) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(cmdText, conn)) { PrepareCommand(cmd, conn, parameters); return cmd.ExecuteScalar(); } } } /// /// 批量处理数据操作语句。 /// public void ExecuteNonQueryBatch(List> list) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { if (conn.State != ConnectionState.Open) { conn.Open(); } using (SQLiteTransaction tran = conn.BeginTransaction()) { using (SQLiteCommand cmd = new SQLiteCommand(conn)) { try { foreach (var item in list) { cmd.CommandText = item.Key; if (item.Value != null) { cmd.Parameters.AddRange(item.Value); } cmd.ExecuteNonQuery(); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } } } } } } }