說明:開始幾個是基本的方法,后面稍微封裝了下
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 }