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 }

 

posted @ 2012-06-26 12:02  xyzla  阅读(2052)  评论(0编辑  收藏  举报