1. 程式人生 > >SQLite Helper類,基於.net c#的SQLite資料庫操作類

SQLite Helper類,基於.net c#的SQLite資料庫操作類

SQLite這個精巧的小資料庫,無需安裝軟體,只需要一個System.Data.SQLite.DLL檔案即可操作SQLite資料庫。但是據說功能卻非常強大。

簡介:

SQLite是一個開源資料庫,現在已變得越來越流行,它的體積很小,被廣泛應用於各種不同型別的應用中。SQLite已經是世界上佈署得最廣泛的SQL資料庫引擎,被用在無以計數的桌面電腦應用中,還有消費電子裝置中,如行動電話、掌上電腦和MP3播放器等。SQLite的原始碼就放在公有領域(即WikiPedia的public domain)中。

開始使用:

using System;

using System.Collections.Generic;

using
System.Text; using System.Web; using System.Configuration; using System.Data; using System.Data.SQLite; namespace DAL { public class Sqlite { ///<summary>/// 獲得連線物件 ///</summary>///<returns></returns> public static SQLiteConnection GetSQLiteConnection() { return
new SQLiteConnection("Data Source=" + System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["db"].ToString())); } private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p) { if
(conn.State != ConnectionState.Open) conn.Open(); cmd.Parameters.Clear(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 30; if (p != null) { foreach (object parm in p) cmd.Parameters.AddWithValue(string.Empty, parm); //for (int i = 0; i < p.Length; i++) // cmd.Parameters[i].Value = p[i]; } } public static DataSet ExecuteDataset(string cmdText, params object[] p) { DataSet ds = new DataSet(); SQLiteCommand command = new SQLiteCommand(); using (SQLiteConnection connection = GetSQLiteConnection()) { PrepareCommand(command, connection, cmdText, p); SQLiteDataAdapter da = new SQLiteDataAdapter(command); da.Fill(ds); } return ds; } public static DataRow ExecuteDataRow(string cmdText, params object[] p) { DataSet ds = ExecuteDataset(cmdText, p); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) return ds.Tables[0].Rows[0]; return null; } ///<summary>/// 返回受影響的行數 ///</summary>///<param name="cmdText">a</param>///<param name="commandParameters">傳入的引數</param>///<returns></returns> public static int ExecuteNonQuery(string cmdText, params object[] p) { SQLiteCommand command = new SQLiteCommand(); using (SQLiteConnection connection = GetSQLiteConnection()) { PrepareCommand(command, connection, cmdText, p); return command.ExecuteNonQuery(); } } ///<summary>/// 返回SqlDataReader物件 ///</summary>///<param name="cmdText"></param>///<param name="commandParameters">傳入的引數</param>///<returns></returns> public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p) { SQLiteCommand command = new SQLiteCommand(); SQLiteConnection connection = GetSQLiteConnection(); try { PrepareCommand(command, connection, cmdText, p); SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); return reader; } catch { connection.Close(); throw; } } ///<summary>/// 返回結果集中的第一行第一列,忽略其他行或列 ///</summary>///<param name="cmdText"></param>///<param name="commandParameters">傳入的引數</param>///<returns></returns> public static object ExecuteScalar(string cmdText, params object[] p) { SQLiteCommand cmd = new SQLiteCommand(); using (SQLiteConnection connection = GetSQLiteConnection()) { PrepareCommand(cmd, connection, cmdText, p); return cmd.ExecuteScalar(); } } ///<summary>/// 分頁 ///</summary>///<param name="recordCount"></param>///<param name="pageIndex"></param>///<param name="pageSize"></param>///<param name="cmdText"></param>///<param name="countText"></param>///<param name="p"></param>///<returns></returns> public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p) { if (recordCount < 0) recordCount = int.Parse(ExecuteScalar(countText, p).ToString()); DataSet ds = new DataSet(); SQLiteCommand command = new SQLiteCommand(); using (SQLiteConnection connection = GetSQLiteConnection()) { PrepareCommand(command, connection, cmdText, p); SQLiteDataAdapter da = new SQLiteDataAdapter(command); da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result"); } return ds; } } } 以上是我根據SqlHelperOledbHelper類修改而來。