| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
xf3f
9年前发布

封装了 System.Data.SQLite 的数据库助手类

System.Data.SQLite数据库通用类 
针对对数据库的操作情况,分为以下几种情况:
创建数据库文件;
返回DataTable;
返回DataReader;
执行增删改,返回受影响的行数;
执行查询,返回第一行第一列(通常用于带有行函数的查询,如SUM/AVG/COUNT等);
返回库中所有的表;
因为在System.Data.SQLite中不存在存储过程,所以所有的操作都是基于文本的SQL语句,为了避免SQL注入,所以使用了参数化的SQL语句,这个数据库通用类如下:

   using System;  using System.Data;  using System.Data.Common;  using System.Data.SQLite;      namespace SQLiteQueryBrowser  {      /// <summary>      /// 说明:这是一个针对System.Data.SQLite的数据库常规操作封装的通用类。      /// Version:0.1      /// </summary>      public class SQLiteDBHelper      {          private string connectionString = string.Empty;          /// <summary>          /// 构造函数          /// </summary>          /// <param name="dbPath">SQLite数据库文件路径</param>          public SQLiteDBHelper(string dbPath)          {              this.connectionString = "Data Source=" + dbPath;          }          /// <summary>          /// 创建SQLite数据库文件          /// </summary>          /// <param name="dbPath">要创建的SQLite数据库文件路径</param>          public static void CreateDB(string dbPath)          {              using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + dbPath))              {                  connection.Open();                  using (SQLiteCommand command = new SQLiteCommand(connection))                  {                      command.CommandText = "CREATE TABLE Demo(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE)";                      command.ExecuteNonQuery();                          command.CommandText = "DROP TABLE Demo";                      command.ExecuteNonQuery();                  }              }          }          /// <summary>          /// 对SQLite数据库执行增删改操作,返回受影响的行数。          /// </summary>          /// <param name="sql">要执行的增删改的SQL语句</param>          /// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>          /// <returns></returns>          public int ExecuteNonQuery(string sql, SQLiteParameter[] parameters)          {              int affectedRows = 0;              using (SQLiteConnection connection = new SQLiteConnection(connectionString))              {                  connection.Open();                  using (DbTransaction transaction = connection.BeginTransaction())                  {                      using (SQLiteCommand command = new SQLiteCommand(connection))                      {                          command.CommandText = sql;                          if (parameters != null)                          {                              command.Parameters.AddRange(parameters);                          }                          affectedRows = command.ExecuteNonQuery();                      }                      transaction.Commit();                  }              }              return affectedRows;          }          /// <summary>          /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例          /// </summary>          /// <param name="sql">要执行的查询语句</param>          /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>          /// <returns></returns>          public SQLiteDataReader ExecuteReader(string sql, SQLiteParameter[] parameters)          {              SQLiteConnection connection = new SQLiteConnection(connectionString);              SQLiteCommand command = new SQLiteCommand(sql, connection);              if (parameters != null)              {                  command.Parameters.AddRange(parameters);              }              connection.Open();              return command.ExecuteReader(CommandBehavior.CloseConnection);          }          /// <summary>          /// 执行一个查询语句,返回一个包含查询结果的DataTable          /// </summary>          /// <param name="sql">要执行的查询语句</param>          /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>          /// <returns></returns>          public DataTable ExecuteDataTable(string sql, SQLiteParameter[] parameters)          {              using (SQLiteConnection connection = new SQLiteConnection(connectionString))              {                  using (SQLiteCommand command = new SQLiteCommand(sql, connection))                  {                      if (parameters != null)                      {                          command.Parameters.AddRange(parameters);                      }                      SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);                      DataTable data = new DataTable();                      adapter.Fill(data);                      return data;                  }              }                          }          /// <summary>          /// 执行一个查询语句,返回查询结果的第一行第一列          /// </summary>          /// <param name="sql">要执行的查询语句</param>          /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>          /// <returns></returns>          public Object ExecuteScalar(string sql, SQLiteParameter[] parameters)          {              using (SQLiteConnection connection = new SQLiteConnection(connectionString))              {                  using (SQLiteCommand command = new SQLiteCommand(sql, connection))                  {                      if (parameters != null)                      {                          command.Parameters.AddRange(parameters);                      }                      SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);                      DataTable data = new DataTable();                      adapter.Fill(data);                      return data;                  }              }          }          /// <summary>          /// 查询数据库中的所有数据类型信息          /// </summary>          /// <returns></returns>          public DataTable GetSchema()          {              using (SQLiteConnection connection = new SQLiteConnection(connectionString))              {                  connection.Open();                  DataTable data=connection.GetSchema("TABLES");                  connection.Close();                  //foreach (DataColumn column in data.Columns)                  //{                  //    Console.WriteLine(column.ColumnName);                  //}                  return data;              }          }          }  }