亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#操作SQLite數據庫幫助類詳解

2020-01-24 00:34:58
字體:
來源:轉載
供稿:網友

本文實例講述了C#操作SQLite數據庫幫助類。分享給大家供大家參考,具體如下:

最近有WPF做客戶端,需要離線操作存儲數據,在項目中考慮使用Sqlite嵌入式數據庫,在網上找了不少資料,最終整理出一個公共的幫助類。

Sqlite是一個非常小巧的數據庫,基本上具備關系型數據庫操作的大多數功能,Sql語法也大同小異。下面是我整理的幫助類代碼:

1.獲取 SQLiteConnection 對象,傳入數據庫有地址即可。

/// <summary>/// 獲得連接對象/// </summary>/// <returns>SQLiteConnection</returns>public static SQLiteConnection GetSQLiteConnection(){ //Sqlite數據庫地址 string str = AppDomain.CurrentDomain.BaseDirectory; var con = new SQLiteConnection("Data Source=" + str + "DataBass//InfoServiceDbB.db"); return con;}

2.準備操作命令參數,構造SQLiteCommand 對象:

/// <summary>/// 準備操作命令參數/// </summary>/// <param name="cmd">SQLiteCommand</param>/// <param name="conn">SQLiteConnection</param>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">參數數組</param>private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, Dictionary<String, String> data){ if (conn.State != ConnectionState.Open)  conn.Open(); cmd.Parameters.Clear(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 30; if (data!=null&&data.Count >= 1) {  foreach (KeyValuePair<String, String> val in data)  {   cmd.Parameters.AddWithValue(val.Key, val.Value);  } }}

3.查詢,返回DataSet

/// <summary>/// 查詢,返回DataSet/// </summary>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">參數數組</param>/// <returns>DataSet</returns>public static DataSet ExecuteDataset(string cmdText, Dictionary<string, string> data){ var ds = new DataSet(); using (SQLiteConnection connection = GetSQLiteConnection()) {  var command = new SQLiteCommand();  PrepareCommand(command, connection, cmdText, data);  var da = new SQLiteDataAdapter(command);  da.Fill(ds); } return ds;}

4.查詢,返回DataTable

/// <summary>/// 查詢,返回DataTable/// </summary>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">參數數組</param>/// <returns>DataTable</returns>public static DataTable ExecuteDataTable(string cmdText, Dictionary<string, string> data){ var dt = new DataTable(); using (SQLiteConnection connection = GetSQLiteConnection()) {  var command = new SQLiteCommand();  PrepareCommand(command, connection, cmdText, data);  SQLiteDataReader reader = command.ExecuteReader();  dt.Load(reader); } return dt;}

5.返回一行數據 DataRow

/// <summary>/// 返回一行數據/// </summary>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">參數數組</param>/// <returns>DataRow</returns>public static DataRow ExecuteDataRow(string cmdText, Dictionary<string, string> data){ DataSet ds = ExecuteDataset(cmdText, data); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)  return ds.Tables[0].Rows[0]; return null;}

6.執行數據庫操作

/// <summary>/// 執行數據庫操作/// </summary>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">傳入的參數</param>/// <returns>返回受影響的行數</returns>public static int ExecuteNonQuery(string cmdText, Dictionary<string, string> data){ using (SQLiteConnection connection = GetSQLiteConnection()) {  var command = new SQLiteCommand();  PrepareCommand(command, connection, cmdText, data);  return command.ExecuteNonQuery(); }}

7.返回SqlDataReader對象

/// <summary>/// 返回SqlDataReader對象/// </summary>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">傳入的參數</param>/// <returns>SQLiteDataReader</returns>public static SQLiteDataReader ExecuteReader(string cmdText, Dictionary<string, string> data){ var command = new SQLiteCommand(); SQLiteConnection connection = GetSQLiteConnection(); try {  PrepareCommand(command, connection, cmdText, data);  SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);  return reader; } catch {  connection.Close();  command.Dispose();  throw; }}

8.返回結果集中的第一行第一列,忽略其他行或列

/// <summary>/// 返回結果集中的第一行第一列,忽略其他行或列/// </summary>/// <param name="cmdText">Sql命令文本</param>/// <param name="data">傳入的參數</param>/// <returns>object</returns>public static object ExecuteScalar(string cmdText, Dictionary<string, string> data){ using (SQLiteConnection connection = GetSQLiteConnection()) {  var cmd = new SQLiteCommand();  PrepareCommand(cmd, connection, cmdText, data);  return cmd.ExecuteScalar(); }}

9.分頁查詢

/// <summary>/// 分頁查詢/// </summary>/// <param name="recordCount">總記錄數</param>/// <param name="pageIndex">頁牽引</param>/// <param name="pageSize">頁大小</param>/// <param name="cmdText">Sql命令文本</param>/// <param name="countText">查詢總記錄數的Sql文本</param>/// <param name="data">命令參數</param>/// <returns>DataSet</returns>public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, Dictionary<string, string> data){ if (recordCount < 0)  recordCount = int.Parse(ExecuteScalar(countText, data).ToString()); var ds = new DataSet(); using (SQLiteConnection connection = GetSQLiteConnection()) {  var command = new SQLiteCommand();  PrepareCommand(command, connection, cmdText, data);  var da = new SQLiteDataAdapter(command);  da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result"); } return ds;}

10.重新組織數據庫

當你從SQLite數據庫中刪除數據時, 未用的磁盤空間將會加入一個內部的“自由列表”中。

當你下次插入數據時,這部分空間可以重用。磁盤空間不會丟失, 但也不會返還給操作系統。

如果刪除了大量數據,而又想縮小數據庫文件占用的空間,執行 VACUUM 命令。 VACUUM 將會從頭重新組織數據庫

你可以在你的程序中約定一個時間間隔執行一次重新組織數據庫的操作,節約空間

public void ResetDataBass(){ using (SQLiteConnection conn = GetSQLiteConnection()) {  var cmd = new SQLiteCommand();  if (conn.State != ConnectionState.Open)   conn.Open();  cmd.Parameters.Clear();  cmd.Connection = conn;  cmd.CommandText = "vacuum";  cmd.CommandType = CommandType.Text;  cmd.CommandTimeout = 30;  cmd.ExecuteNonQuery(); }}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#常見數據庫操作技巧匯總》、《C#常見控件用法教程》、《C#窗體操作技巧匯總》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区免费| 668精品在线视频| 日韩在线中文字| 亚洲国产精品成人av| 欧美激情视频网站| 一区二区三区 在线观看视| 国产视频精品自拍| 日本高清视频精品| 日韩av免费观影| 久久国产精彩视频| 国产成人精品午夜| 51午夜精品视频| 欧美性高潮床叫视频| 亚洲综合最新在线| 国产精品久久久久久久app| 亚洲伦理中文字幕| 成人a在线观看| 国产精品av在线| 岛国视频午夜一区免费在线观看| 有码中文亚洲精品| 久久99久久99精品免观看粉嫩| 亚洲奶大毛多的老太婆| 91网在线免费观看| 欧美一级视频免费在线观看| 欧美一级在线亚洲天堂| 欧美色欧美亚洲高清在线视频| 亚洲第一黄色网| 亚洲综合最新在线| 97精品免费视频| 富二代精品短视频| 欧美在线视频网| 久久精品国产免费观看| 久久精品一本久久99精品| 国产成人av网| 成人久久久久久久| 国产精品色婷婷视频| 亚洲欧美国内爽妇网| 久久精品国产99国产精品澳门| 日韩成人在线电影网| 欧美激情亚洲另类| 亚洲最大av网站| 国产91露脸中文字幕在线| 日韩美女视频在线观看| 亚洲人成在线观看| 国产精品夫妻激情| 亚洲免费av电影| 午夜精品99久久免费| 国产视频丨精品|在线观看| 亚洲毛片在线观看| 亚洲r级在线观看| 成人免费xxxxx在线观看| 国产一区二区三区在线播放免费观看| 亚洲男子天堂网| 一区二区亚洲欧洲国产日韩| 裸体女人亚洲精品一区| 欧美日韩国产综合新一区| 97久久精品视频| 91夜夜揉人人捏人人添红杏| 国产精品视频永久免费播放| 岛国av一区二区三区| 亚洲国产精品大全| 91久久久久久久| 亚洲精品wwwww| 亚洲国产精品成人va在线观看| 久久精品久久久久久| 久久久久久久一区二区| 欧美视频免费在线观看| 久久免费精品日本久久中文字幕| 日韩黄色高清视频| 欧美大片免费观看| 亚洲国产欧美一区二区三区久久| 国产精品视频资源| 亚洲第一区中文99精品| 日韩中文在线中文网在线观看| 97视频在线观看免费| 中文字幕精品一区二区精品| 久久伊人91精品综合网站| 欧美人与物videos| 国自产精品手机在线观看视频| 欧美在线激情网| 国产精品久久久久免费a∨| 国产精品爱久久久久久久| 国产成人精品视| 欧美性猛交99久久久久99按摩| 欧美成人免费观看| 成人国产精品色哟哟| 日本亚洲欧洲色α| 97视频免费观看| 亚洲国产婷婷香蕉久久久久久| 裸体女人亚洲精品一区| 久久久久久久色| 91国产美女在线观看| 深夜福利亚洲导航| 国产在线播放91| 欧美成人激情视频免费观看| 日韩成人在线网站| 中文字幕一精品亚洲无线一区| 91免费视频国产| 久久五月情影视| 欧美一区二区三区免费视| 亚洲精品电影网在线观看| 久久精品中文字幕| 2019精品视频| 成人激情视频在线观看| 日韩免费在线看| 成人黄色片在线| 欧美亚洲视频在线观看| 欧美激情xxxx性bbbb| 欧美精品一区在线播放| 91亚洲一区精品| 日韩精品免费在线播放| 国产91色在线播放| 国产午夜精品美女视频明星a级| 日韩精品高清视频| 国产精品扒开腿做爽爽爽视频| 欧美激情一二区| 国产精品欧美激情| 成人av色在线观看| 亚洲香蕉成视频在线观看| 欧洲成人午夜免费大片| 国产精品成人一区| 亚洲国产精品va| 欧美xxxx做受欧美.88| 亚洲自拍欧美色图| 色综合久久88色综合天天看泰| 亚洲激情在线观看视频免费| 国产欧美日韩精品在线观看| 欧美另类老女人| 亚洲精品国产综合久久| 97福利一区二区| 浅井舞香一区二区| 亚洲欧美日韩一区二区三区在线| 国产精品综合网站| 欧美另类极品videosbest最新版本| 97久久久免费福利网址| 国产精品高潮呻吟视频| 亚洲欧美一区二区精品久久久| 亚洲欧美中文日韩v在线观看| 国产精品一区二区av影院萌芽| 亚洲欧美日韩天堂| 日韩视频第一页| 国产精品电影一区| 日韩电影免费观看中文字幕| 欧美亚洲成人精品| 国产女同一区二区| 国产伦精品一区二区三区精品视频| 91精品国产91久久久久久最新| 欧美一级大片在线免费观看| 久久久久久久久中文字幕| 久久久久久久久电影| 日韩精品在线免费| 在线播放日韩精品| 97在线免费观看| 日韩av在线网站| 亚洲精品成人av| 久久91超碰青草是什么| 国产一区二区黑人欧美xxxx| 成人黄色在线免费| 精品国产欧美成人夜夜嗨| 操人视频在线观看欧美| 国产精品网址在线| 国产精品1区2区在线观看| 国产噜噜噜噜久久久久久久久| 欧美日韩免费在线观看|