using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString = string.Empty; /// <summary> /// 根据数据源、密码、版本号设置连接字符串。 /// </summary> /// <param name="datasource">数据源。</param> /// <param name="password">密码。</param> /// <param name="version">版本号(缺省为3)。</param> public static void SetConnectionString(string datasource, string password, int version = 3) { connectionString = string.Format("Data Source={0};Version={1};password={2}", datasource, version, password); } /// <summary> /// 创建一个数据库文件。如果存在同名数据库文件,则会覆盖。 /// </summary> /// <param name="dbName">数据库文件名。为null或空串时不创建。</param> /// <param name="password">(可选)数据库密码,默认为空。</param> /// <exception cref="Exception"></exception> public static void CreateDB(string dbName) { if (!string.IsNullOrEmpty(dbName)) { try { SQLiteConnection.CreateFile(dbName); } catch (Exception) { throw; } } } /// <summary> /// 对SQLite数据库执行增删改操作,返回受影响的行数。 /// </summary> /// <param name="sql">要执行的增删改的SQL语句。</param> /// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> /// <returns></returns> /// <exception cref="Exception"></exception> public int ExecuteNonQuery(string sql, params SQLiteParameter[] parameters) { int affectedRows = 0; using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand command = new SQLiteCommand(connection)) { try { connection.Open(); command.CommandText = sql; if (parameters.Length != 0) { command.Parameters.AddRange(parameters); } affectedRows = command.ExecuteNonQuery(); } catch (Exception) { throw; } } } return affectedRows; } /// <summary> /// 批量处理数据操作语句。 /// </summary> /// <param name="list">SQL语句集合。</param> /// <exception cref="Exception"></exception> public void ExecuteNonQueryBatch(List<KeyValuePair<string, SQLiteParameter[]>> list) { using (SQLiteConnection conn = new SQLiteConnection(connectionString)) { try { conn.Open(); } catch { throw; } 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) { tran.Rollback(); throw; } } } } } /// <summary> /// 执行查询语句,并返回第一个结果。 /// </summary> /// <param name="sql">查询语句。</param> /// <returns>查询结果。</returns> /// <exception cref="Exception"></exception> public object ExecuteScalar(string sql, params SQLiteParameter[] parameters) { using (SQLiteConnection conn = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand(conn)) { try { conn.Open(); cmd.CommandText = sql; if (parameters.Length != 0) { cmd.Parameters.AddRange(parameters); } return cmd.ExecuteScalar(); } catch (Exception) { throw; } } } } /// <summary> /// 执行一个查询语句,返回一个包含查询结果的DataTable。 /// </summary> /// <param name="sql">要执行的查询语句。</param> /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> /// <returns></returns> /// <exception cref="Exception"></exception> public DataTable ExecuteQuery(string sql, params SQLiteParameter[] parameters) { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand command = new SQLiteCommand(sql, connection)) { if (parameters.Length != 0) { command.Parameters.AddRange(parameters); } SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); DataTable data = new DataTable(); try { adapter.Fill(data); } catch (Exception) { throw; } return data; } } } /// <summary> /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例。 /// </summary> /// <param name="sql">要执行的查询语句。</param> /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> /// <returns></returns> /// <exception cref="Exception"></exception> public SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parameters) { SQLiteConnection connection = new SQLiteConnection(connectionString); SQLiteCommand command = new SQLiteCommand(sql, connection); try { if (parameters.Length != 0) { command.Parameters.AddRange(parameters); } connection.Open(); return command.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception) { throw; } } /// <summary> /// 查询数据库中的所有数据类型信息。 /// </summary> /// <returns></returns> /// <exception cref="Exception"></exception> public DataTable GetSchema() { using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { try { connection.Open(); return connection.GetSchema("TABLES"); } catch (Exception) { throw; } } } } }
注意:在使用该类的时候,需要引用System.Data.SQLite程序集。
版权声明:本文为博主原创文章,未经博主允许不得转载。
C#操作SQLite数据库帮助类——SQLiteHelper
原文:http://blog.csdn.net/liujian619/article/details/47302719