• SQLiteHelper


     
     
    View Code
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Data;
      6 using System.Data.Common;
      7 using System.Data.SQLite;
      8 
      9 namespace Tools.Data
     10 {
     11     /// <summary>
     12     /// 本类为SQLite数据库帮助静态类,使用时只需直接调用即可,无需实例化
     13     /// </summary>
     14     public static class SQLiteHelper
     15     {
     16         #region
     17         #region ExecuteNonQuery
     18         /// <summary>
     19         /// 执行数据库操作(新增、更新或删除)
     20         /// </summary>
     21         /// <param name="connectionString">连接字符串</param>
     22         /// <param name="cmd">SqlCommand对象</param>
     23         /// <returns>所受影响的行数</returns>
     24         public static int ExecuteNonQuery(string connectionString, SQLiteCommand cmd)
     25         {
     26             int result = 0;
     27             if (connectionString == null || connectionString.Length == 0)
     28                 throw new ArgumentNullException("connectionString");
     29             using (SQLiteConnection con = new SQLiteConnection(connectionString))
     30             {
     31                 SQLiteTransaction trans = null;
     32                 PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);
     33                 try
     34                 {
     35                     result = cmd.ExecuteNonQuery();
     36                     trans.Commit();
     37                 }
     38                 catch (Exception ex)
     39                 {
     40                     trans.Rollback();
     41                     throw ex;
     42                 }
     43             }
     44             return result;
     45         }
     46 
     47         /// <summary>
     48         /// 执行数据库操作(新增、更新或删除)
     49         /// </summary>
     50         /// <param name="connectionString">连接字符串</param>
     51         /// <param name="commandText">执行语句或存储过程名</param>
     52         /// <param name="commandType">执行类型</param>
     53         /// <returns>所受影响的行数</returns>
     54         public static int ExecuteNonQuery(string connectionString, string commandText, CommandType commandType)
     55         {
     56             int result = 0;
     57             if (connectionString == null || connectionString.Length == 0)
     58                 throw new ArgumentNullException("connectionString");
     59             if (commandText == null || commandText.Length == 0)
     60                 throw new ArgumentNullException("commandText");
     61             SQLiteCommand cmd = new SQLiteCommand();
     62             using (SQLiteConnection con = new SQLiteConnection(connectionString))
     63             {
     64                 SQLiteTransaction trans = null;
     65                 PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
     66                 try
     67                 {
     68                     result = cmd.ExecuteNonQuery();
     69                     trans.Commit();
     70                 }
     71                 catch (Exception ex)
     72                 {
     73                     trans.Rollback();
     74                     throw ex;
     75                 }
     76             }
     77             return result;
     78         }
     79 
     80         /// <summary>
     81         /// 执行数据库操作(新增、更新或删除)
     82         /// </summary>
     83         /// <param name="connectionString">连接字符串</param>
     84         /// <param name="commandText">执行语句或存储过程名</param>
     85         /// <param name="commandType">执行类型</param>
     86         /// <param name="cmdParms">SQL参数对象</param>
     87         /// <returns>所受影响的行数</returns>
     88         public static int ExecuteNonQuery(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
     89         {
     90             int result = 0;
     91             if (connectionString == null || connectionString.Length == 0)
     92                 throw new ArgumentNullException("connectionString");
     93             if (commandText == null || commandText.Length == 0)
     94                 throw new ArgumentNullException("commandText");
     95 
     96             SQLiteCommand cmd = new SQLiteCommand();
     97             using (SQLiteConnection con = new SQLiteConnection(connectionString))
     98             {
     99                 SQLiteTransaction trans = null;
    100                 PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
    101                 try
    102                 {
    103                     result = cmd.ExecuteNonQuery();
    104                     trans.Commit();
    105                 }
    106                 catch (Exception ex)
    107                 {
    108                     trans.Rollback();
    109                     throw ex;
    110                 }
    111             }
    112             return result;
    113         }
    114         #endregion
    115 
    116         #region ExecuteScalar
    117         /// <summary>
    118         /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
    119         /// </summary>
    120         /// <param name="connectionString">连接字符串</param>
    121         /// <param name="cmd">SqlCommand对象</param>
    122         /// <returns>查询所得的第1行第1列数据</returns>
    123         public static object ExecuteScalar(string connectionString, SQLiteCommand cmd)
    124         {
    125             object result = 0;
    126             if (connectionString == null || connectionString.Length == 0)
    127                 throw new ArgumentNullException("connectionString");
    128             using (SQLiteConnection con = new SQLiteConnection(connectionString))
    129             {
    130                 SQLiteTransaction trans = null;
    131                 PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);
    132                 try
    133                 {
    134                     result = cmd.ExecuteScalar();
    135                     trans.Commit();
    136                 }
    137                 catch (Exception ex)
    138                 {
    139                     trans.Rollback();
    140                     throw ex;
    141                 }
    142             }
    143             return result;
    144         }
    145 
    146         /// <summary>
    147         /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
    148         /// </summary>
    149         /// <param name="connectionString">连接字符串</param>
    150         /// <param name="commandText">执行语句或存储过程名</param>
    151         /// <param name="commandType">执行类型</param>
    152         /// <returns>查询所得的第1行第1列数据</returns>
    153         public static object ExecuteScalar(string connectionString, string commandText, CommandType commandType)
    154         {
    155             object result = 0;
    156             if (connectionString == null || connectionString.Length == 0)
    157                 throw new ArgumentNullException("connectionString");
    158             if (commandText == null || commandText.Length == 0)
    159                 throw new ArgumentNullException("commandText");
    160             SQLiteCommand cmd = new SQLiteCommand();
    161             using (SQLiteConnection con = new SQLiteConnection(connectionString))
    162             {
    163                 SQLiteTransaction trans = null;
    164                 PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
    165                 try
    166                 {
    167                     result = cmd.ExecuteScalar();
    168                     trans.Commit();
    169                 }
    170                 catch (Exception ex)
    171                 {
    172                     trans.Rollback();
    173                     throw ex;
    174                 }
    175             }
    176             return result;
    177         }
    178 
    179         /// <summary>
    180         /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
    181         /// </summary>
    182         /// <param name="connectionString">连接字符串</param>
    183         /// <param name="commandText">执行语句或存储过程名</param>
    184         /// <param name="commandType">执行类型</param>
    185         /// <param name="cmdParms">SQL参数对象</param>
    186         /// <returns>查询所得的第1行第1列数据</returns>
    187         public static object ExecuteScalar(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
    188         {
    189             object result = 0;
    190             if (connectionString == null || connectionString.Length == 0)
    191                 throw new ArgumentNullException("connectionString");
    192             if (commandText == null || commandText.Length == 0)
    193                 throw new ArgumentNullException("commandText");
    194 
    195             SQLiteCommand cmd = new SQLiteCommand();
    196             using (SQLiteConnection con = new SQLiteConnection(connectionString))
    197             {
    198                 SQLiteTransaction trans = null;
    199                 PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
    200                 try
    201                 {
    202                     result = cmd.ExecuteScalar();
    203                     trans.Commit();
    204                 }
    205                 catch (Exception ex)
    206                 {
    207                     trans.Rollback();
    208                     throw ex;
    209                 }
    210             }
    211             return result;
    212         }
    213         #endregion
    214 
    215         #region ExecuteReader
    216         /// <summary>
    217         /// 执行数据库查询,返回SqlDataReader对象
    218         /// </summary>
    219         /// <param name="connectionString">连接字符串</param>
    220         /// <param name="cmd">SqlCommand对象</param>
    221         /// <returns>SqlDataReader对象</returns>
    222         public static DbDataReader ExecuteReader(string connectionString, SQLiteCommand cmd)
    223         {
    224             DbDataReader reader = null;
    225             if (connectionString == null || connectionString.Length == 0)
    226                 throw new ArgumentNullException("connectionString");
    227 
    228             SQLiteConnection con = new SQLiteConnection(connectionString);
    229             SQLiteTransaction trans = null;
    230             PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);
    231             try
    232             {
    233                 reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    234             }
    235             catch (Exception ex)
    236             {
    237                 throw ex;
    238             }
    239             return reader;
    240         }
    241 
    242         /// <summary>
    243         /// 执行数据库查询,返回SqlDataReader对象
    244         /// </summary>
    245         /// <param name="connectionString">连接字符串</param>
    246         /// <param name="commandText">执行语句或存储过程名</param>
    247         /// <param name="commandType">执行类型</param>
    248         /// <returns>SqlDataReader对象</returns>
    249         public static DbDataReader ExecuteReader(string connectionString, string commandText, CommandType commandType)
    250         {
    251             DbDataReader reader = null;
    252             if (connectionString == null || connectionString.Length == 0)
    253                 throw new ArgumentNullException("connectionString");
    254             if (commandText == null || commandText.Length == 0)
    255                 throw new ArgumentNullException("commandText");
    256 
    257             SQLiteConnection con = new SQLiteConnection(connectionString);
    258             SQLiteCommand cmd = new SQLiteCommand();
    259             SQLiteTransaction trans = null;
    260             PrepareCommand(cmd, con, ref trans, false, commandType, commandText);
    261             try
    262             {
    263                 reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    264             }
    265             catch (Exception ex)
    266             {
    267                 throw ex;
    268             }
    269             return reader;
    270         }
    271 
    272         /// <summary>
    273         /// 执行数据库查询,返回SqlDataReader对象
    274         /// </summary>
    275         /// <param name="connectionString">连接字符串</param>
    276         /// <param name="commandText">执行语句或存储过程名</param>
    277         /// <param name="commandType">执行类型</param>
    278         /// <param name="cmdParms">SQL参数对象</param>
    279         /// <returns>SqlDataReader对象</returns>
    280         public static DbDataReader ExecuteReader(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
    281         {
    282             DbDataReader reader = null;
    283             if (connectionString == null || connectionString.Length == 0)
    284                 throw new ArgumentNullException("connectionString");
    285             if (commandText == null || commandText.Length == 0)
    286                 throw new ArgumentNullException("commandText");
    287 
    288             SQLiteConnection con = new SQLiteConnection(connectionString);
    289             SQLiteCommand cmd = new SQLiteCommand();
    290             SQLiteTransaction trans = null;
    291             PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms);
    292             try
    293             {
    294                 reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    295             }
    296             catch (Exception ex)
    297             {
    298                 throw ex;
    299             }
    300             return reader;
    301         }
    302         #endregion
    303 
    304         #region ExecuteDataSet
    305         /// <summary>
    306         /// 执行数据库查询,返回DataSet对象
    307         /// </summary>
    308         /// <param name="connectionString">连接字符串</param>
    309         /// <param name="cmd">SqlCommand对象</param>
    310         /// <returns>DataSet对象</returns>
    311         public static DataSet ExecuteDataSet(string connectionString, SQLiteCommand cmd)
    312         {
    313             DataSet ds = new DataSet();
    314             SQLiteConnection con = new SQLiteConnection(connectionString);
    315             SQLiteTransaction trans = null;
    316             PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);
    317             try
    318             {
    319                 SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
    320                 sda.Fill(ds);
    321             }
    322             catch (Exception ex)
    323             {
    324                 throw ex;
    325             }
    326             finally
    327             {
    328                 if (cmd.Connection != null)
    329                 {
    330                     if (cmd.Connection.State == ConnectionState.Open)
    331                     {
    332                         cmd.Connection.Close();
    333                     }
    334                 }
    335             }
    336             return ds;
    337         }
    338 
    339         /// <summary>
    340         /// 执行数据库查询,返回DataSet对象
    341         /// </summary>
    342         /// <param name="connectionString">连接字符串</param>
    343         /// <param name="commandText">执行语句或存储过程名</param>
    344         /// <param name="commandType">执行类型</param>
    345         /// <returns>DataSet对象</returns>
    346         public static DataSet ExecuteDataSet(string connectionString, string commandText, CommandType commandType)
    347         {
    348             if (connectionString == null || connectionString.Length == 0)
    349                 throw new ArgumentNullException("connectionString");
    350             if (commandText == null || commandText.Length == 0)
    351                 throw new ArgumentNullException("commandText");
    352             DataSet ds = new DataSet();
    353             SQLiteConnection con = new SQLiteConnection(connectionString);
    354             SQLiteCommand cmd = new SQLiteCommand();
    355             SQLiteTransaction trans = null;
    356             PrepareCommand(cmd, con, ref trans, false, commandType, commandText);
    357             try
    358             {
    359                 SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
    360                 sda.Fill(ds);
    361             }
    362             catch (Exception ex)
    363             {
    364                 throw ex;
    365             }
    366             finally
    367             {
    368                 if (con != null)
    369                 {
    370                     if (con.State == ConnectionState.Open)
    371                     {
    372                         con.Close();
    373                     }
    374                 }
    375             }
    376             return ds;
    377         }
    378 
    379         /// <summary>
    380         /// 执行数据库查询,返回DataSet对象
    381         /// </summary>
    382         /// <param name="connectionString">连接字符串</param>
    383         /// <param name="commandText">执行语句或存储过程名</param>
    384         /// <param name="commandType">执行类型</param>
    385         /// <param name="cmdParms">SQL参数对象</param>
    386         /// <returns>DataSet对象</returns>
    387         public static DataSet ExecuteDataSet(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
    388         {
    389             if (connectionString == null || connectionString.Length == 0)
    390                 throw new ArgumentNullException("connectionString");
    391             if (commandText == null || commandText.Length == 0)
    392                 throw new ArgumentNullException("commandText");
    393             DataSet ds = new DataSet();
    394             SQLiteConnection con = new SQLiteConnection(connectionString);
    395             SQLiteCommand cmd = new SQLiteCommand();
    396             SQLiteTransaction trans = null;
    397             PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms);
    398             try
    399             {
    400                 SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
    401                 sda.Fill(ds);
    402             }
    403             catch (Exception ex)
    404             {
    405                 throw ex;
    406             }
    407             finally
    408             {
    409                 if (con != null)
    410                 {
    411                     if (con.State == ConnectionState.Open)
    412                     {
    413                         con.Close();
    414                     }
    415                 }
    416             }
    417             return ds;
    418         }
    419         #endregion
    420 
    421         /// <summary>
    422         /// 通用分页查询方法
    423         /// </summary>
    424         /// <param name="connString">连接字符串</param>
    425         /// <param name="tableName">表名</param>
    426         /// <param name="strColumns">查询字段名</param>
    427         /// <param name="strWhere">where条件</param>
    428         /// <param name="strOrder">排序条件</param>
    429         /// <param name="pageSize">每页数据数量</param>
    430         /// <param name="currentIndex">当前页数</param>
    431         /// <param name="recordOut">数据总量</param>
    432         /// <returns>DataTable数据表</returns>
    433         public static DataTable SelectPaging(string connString, string tableName, string strColumns, string strWhere, string strOrder, int pageSize, int currentIndex, out int recordOut)
    434         {
    435             DataTable dt = new DataTable();
    436             recordOut = Convert.ToInt32(ExecuteScalar(connString, "select count(*) from " + tableName, CommandType.Text));
    437             string pagingTemplate = "select {0} from {1} where {2} order by {3} limit {4} offset {5} ";
    438             int offsetCount = (currentIndex - 1) * pageSize;
    439             string commandText = String.Format(pagingTemplate, strColumns, tableName, strWhere, strOrder, pageSize.ToString(), offsetCount.ToString());
    440             using (DbDataReader reader = ExecuteReader(connString, commandText, CommandType.Text))
    441             {
    442                 if (reader != null)
    443                 {
    444                     dt.Load(reader);
    445                 }
    446             }
    447             return dt;
    448         }
    449 
    450         /// <summary>
    451         /// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化
    452         /// </summary>
    453         /// <param name="cmd">Command对象</param>
    454         /// <param name="conn">Connection对象</param>
    455         /// <param name="trans">Transcation对象</param>
    456         /// <param name="useTrans">是否使用事务</param>
    457         /// <param name="cmdType">SQL字符串执行类型</param>
    458         /// <param name="cmdText">SQL Text</param>
    459         /// <param name="cmdParms">SQLiteParameters to use in the command</param>
    460         private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, ref SQLiteTransaction trans, bool useTrans, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
    461         {
    462 
    463             if (conn.State != ConnectionState.Open)
    464                 conn.Open();
    465 
    466             cmd.Connection = conn;
    467             cmd.CommandText = cmdText;
    468 
    469             if (useTrans)
    470             {
    471                 trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
    472                 cmd.Transaction = trans;
    473             }
    474 
    475 
    476             cmd.CommandType = cmdType;
    477 
    478             if (cmdParms != null)
    479             {
    480                 foreach (SQLiteParameter parm in cmdParms)
    481                     cmd.Parameters.Add(parm);
    482             }
    483         }
    484         #endregion
    485     }
    486 }
  • 相关阅读:
    oracle数据库体系架构详解
    数据库迁移之从oracle 到 MySQL
    一个专业DBA应具备的技能
    Oracle 内存参数调优设置
    正向代理与反向代理的区别
    负载均衡的几种常用方式
    Java虚拟机JVM学习07 类的卸载机制
    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论
    Git 撤销修改
    Git 分支管理和冲突解决
  • 原文地址:https://www.cnblogs.com/xyzla/p/2563449.html
Copyright © 2020-2023  润新知