zoukankan      html  css  js  c++  java
  • [C#] 改进SqliteHelper, 减少拼接SQL语句

    说明:开始几个是基本的方法,后面稍微封装了下

      1 public class SqliteHelper
      2     {
      3         //连接字符串
      4         private static readonly string str = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
      5 
      6         /// <summary>
      7         /// 增删改
      8         /// 20180723
      9         /// </summary>
     10         /// <param name="sql">sql语句</param>
     11         /// <param name="param">sql参数</param>
     12         /// <returns>受影响的行数</returns>
     13         public static int ExecuteNonQuery(string sql, params SQLiteParameter[] param)
     14         {
     15             //try
     16             //{
     17                 using (SQLiteConnection con = new SQLiteConnection(str))
     18                 {
     19                     using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
     20                     {
     21                         con.Open();
     22                         if (param != null)
     23                         {
     24                             cmd.Parameters.AddRange(param);
     25                         }
     26 
     27                         string sql2 = cmd.CommandText;
     28                         //con.Close();
     29                         return cmd.ExecuteNonQuery();
     30                     }
     31                 }
     32             //}
     33             //catch (SQLiteException se)
     34             //{
     35             //    return 0;
     36             //}
     37         }
     38 
     39         /// <summary>
     40         /// 查询
     41         /// 20180723
     42         /// </summary>
     43         /// <param name="sql">sql语句</param>
     44         /// <param name="param">sql参数</param>
     45         /// <returns>首行首列</returns>
     46         public static object ExecuteScalar(string sql, params SQLiteParameter[] param) 
     47         {
     48             using(SQLiteConnection con = new SQLiteConnection(str))
     49             {
     50                 using(SQLiteCommand cmd = new SQLiteCommand(sql, con))
     51                 {
     52                     con.Open();
     53                     if (param != null) 
     54                     {
     55                         cmd.Parameters.AddRange(param);
     56                     }
     57 
     58                     return cmd.ExecuteScalar();
     59                 }
     60             }
     61         }
     62 
     63         /// <summary>
     64         /// 多行查询
     65         /// 20180723
     66         /// </summary>
     67         /// <param name="sql">sql语句</param>
     68         /// <param name="param">sql参数</param>
     69         /// <returns>SQLiteDateReader</returns>
     70         public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] param)
     71         {
     72             using (SQLiteConnection con = new SQLiteConnection(str))
     73             {
     74                 using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
     75                 {
     76                     if (param != null)
     77                     {
     78                         cmd.Parameters.AddRange(param);
     79                     }
     80                     try
     81                     {
     82                         con.Open();
     83                         return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
     84                     }
     85                     catch (Exception ex)
     86                     {
     87                         con.Close();
     88                         con.Dispose();
     89                         throw ex;
     90                     }
     91                 }
     92             }
     93        
     94         }
     95 
     96         /// <summary>
     97         /// 查询多行数据
     98         /// 20180723
     99         /// </summary>
    100         /// <param name="sql">sql语句</param>
    101         /// <param name="param">sql参数</param>
    102         /// <returns>一个表</returns>
    103         public static DataTable ExecuteTable(string sql, params SQLiteParameter[] param)
    104         {
    105             DataTable dt = new DataTable();
    106             using (SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, str))
    107             {
    108                 if (param != null)
    109                 {
    110                     sda.SelectCommand.Parameters.AddRange(param);
    111                 }
    112                 sda.Fill(dt);
    113             }
    114             return dt;
    115         }
    116 
    117         /// <summary>
    118         /// 查询封装
    119         /// 20180725
    120         /// </summary>
    121         /// <param name="tbName">表名</param>
    122         /// <param name="fields">查询需要的字段名:"id, name, age"</param>
    123         /// <param name="where">查询条件:"id = 1"</param>
    124         /// <param name="orderBy">排序:"id desc"</param>
    125         /// <param name="limit">分页:"0,10"</param>
    126         /// <param name="param">sql参数</param>
    127         /// <returns>受影响行数</returns>
    128         public static DataTable QueryTable(string tbName, string fields = "*", string where = "1", string orderBy = "", string limit = "", params SQLiteParameter[] param)
    129         {
    130             //排序
    131             if (orderBy != "")
    132             {
    133                 orderBy = "ORDER BY " + orderBy;//Deom: ORDER BY id desc
    134             }
    135 
    136             //分页
    137             if (limit != "")
    138             {
    139                 limit = "LIMIT " + limit;//Deom: LIMIT 0,10
    140             }
    141 
    142             string sql = string.Format("SELECT {0} FROM `{1}` WHERE {2} {3} {4}", fields, tbName, where, orderBy, limit);
    143 
    144             //return sql;
    145             return SqliteHelper.ExecuteTable(sql, param);
    146 
    147         }
    148 
    149         /// <summary>
    150         /// 数据插入
    151         /// 20180725
    152         /// </summary>
    153         /// <param name="tbName">表名</param>
    154         /// <param name="insertData">需要插入的数据字典</param>
    155         /// <returns>受影响行数</returns>
    156         public static int ExecuteInsert(string tbName, Dictionary<String , String> insertData)
    157         {
    158             string point = "";//分隔符号(,)
    159             string keyStr = "";//字段名拼接字符串
    160             string valueStr = "";//值的拼接字符串
    161 
    162             List<SQLiteParameter> param = new List<SQLiteParameter>();
    163             foreach (string key in insertData.Keys)
    164             {
    165                 keyStr += string.Format("{0} `{1}`", point, key);
    166                 valueStr += string.Format("{0} @{1}", point, key);
    167                 param.Add(new SQLiteParameter("@"+key, insertData[key]));
    168                 point = ",";
    169             }
    170             string sql = string.Format("INSERT INTO `{0}`({1}) VALUES({2})", tbName, keyStr, valueStr);
    171 
    172             //return sql;
    173             return ExecuteNonQuery(sql, param.ToArray());
    174 
    175         }
    176 
    177         /// <summary>
    178         /// 执行Update语句
    179         /// 20180725
    180         /// </summary>
    181         /// <param name="tbName">表名</param>
    182         /// <param name="where">更新条件:id=1</param>
    183         /// <param name="insertData">需要更新的数据</param>
    184         /// <returns>受影响行数</returns>
    185         public static int ExecuteUpdate(string tbName, string where, Dictionary<String, String> insertData)
    186         {
    187             string point = "";//分隔符号(,)
    188             string kvStr = "";//键值对拼接字符串(Id=@Id)
    189 
    190             List<SQLiteParameter> param = new List<SQLiteParameter>();
    191             foreach (string key in insertData.Keys)
    192             {
    193                 kvStr += string.Format("{0} {1}=@{2}",point, key, key);
    194                 param.Add(new SQLiteParameter("@" + key, insertData[key]));
    195                 point = ",";
    196             }
    197             string sql = string.Format("UPDATE `{0}` SET {1} WHERE {2}", tbName, kvStr, where);
    198 
    199             return ExecuteNonQuery(sql, param.ToArray());
    200 
    201         }
    202 
    203 
    204     }
  • 相关阅读:
    stm32keilIDE遇到的bug
    linux输入子系统
    按键消抖
    字符驱动程序之——同步互斥阻塞
    字符驱动程序之——异步通知
    字符驱动程序之——poll机制
    第一个驱动之字符设备驱动(四)按键中断
    第一个驱动之字符设备驱动(三)按键查询
    第一个驱动之字符设备驱动(二)mdev
    三者互ping,PC,虚拟机,uboot,nfs网络文件系统搭建
  • 原文地址:https://www.cnblogs.com/reader/p/9364973.html
Copyright © 2011-2022 走看看