成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#中數據本地存儲方案之SQLite

開發 后端
今天我們將討論的是C#中數據本地存儲方案之SQLite,這一方案較之前的Access方案有更多的好處。

即使是做網絡應用,在斷線情況下,也需要考慮數據的本地存儲。在SQLite出現之前,數據量大的情況下,我們一直使用ACCESS,數據量小,則文件存儲。ACCESS不支持事務原子性,在斷電情況下(這種情況總是會發生)會導致數據很難恢復。

一:安裝

SQLITE,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)。下載完畢是一個EXE,安裝后根目錄如下:

clip_image002

Bin下有一個測試工具,可以查看本地運行SQLITE的各項性能指標。

二:新建數據庫

安裝完畢后,打開visual studio,新建數據連接,可以看到數據源多了一項SQLite。

clip_image004

新建連接,如下圖。SQLITE的數據庫,保存后是一個文件。

clip_image006

三:數據庫維護

可以在Visual Studio中方面的維護SQLITE數據,如下圖:

clip_image008

可以在Visual Studio中使用類似SQL查詢分析器的功能,如下圖:

clip_image010

四:混合模式

安裝完畢,可以直接在項目集的引用中,多了

System.Data.SQLite

System.Data.SQLite.Linq

兩個程序集,由于http://sqlite.phxsoftware.com/的System.Data.SQLite是混合模式程序集,是針對“v2.0.50727”版的運行時生成的,在沒有配置其他信息的情況下,無法在 4.0 運行時中加載該程序集。故需要在App.config中配置如下參數。

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <configuration> 
  3.   <startup useLegacyV2RuntimeActivationPolicy="true"> 
  4.     <supportedRuntime version="v4.0"/> 
  5.   </startup> 
  6. </configuration> 

五:SQLiteHelper

最后,提供一個自己寫的SQLiteHelper:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Data.SQLite;  
  6. using System.Data;  
  7. using System.Data.Common;  
  8.  
  9. namespace Com.Luminji.DataService.SQLHelpers  
  10. {  
  11.     public class SQLiteHelper  
  12.     {  
  13.         /// <summary>  
  14.         /// ConnectionString樣例:Datasource=Test.db3;Pooling=true;FailIfMissing=false  
  15.         /// </summary>  
  16.         public static string ConnectionString { getset; }  
  17.  
  18.         private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)  
  19.         {  
  20.             if (conn.State != ConnectionState.Open)  
  21.                 conn.Open();  
  22.             cmd.Parameters.Clear();  
  23.             cmd.Connection = conn;  
  24.             cmd.CommandText = cmdText;  
  25.             cmd.CommandType = CommandType.Text;  
  26.             cmd.CommandTimeout = 30;  
  27.             if (p != null)  
  28.             {  
  29.                 foreach (object parm in p)  
  30.                     cmd.Parameters.AddWithValue(string.Empty, parm);  
  31.             }  
  32.         }  
  33.  
  34.         public static DataSet ExecuteQuery(string cmdText, params object[] p)  
  35.         {  
  36.             using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))  
  37.             {  
  38.                 using (SQLiteCommand command = new SQLiteCommand())  
  39.                 {  
  40.                     DataSet ds = new DataSet();  
  41.                     PrepareCommand(command, conn, cmdText, p);  
  42.                     SQLiteDataAdapter da = new SQLiteDataAdapter(command);  
  43.                     da.Fill(ds);  
  44.                     return ds;  
  45.                 }  
  46.             }  
  47.         }  
  48.  
  49.         public static int ExecuteNonQuery(string cmdText, params object[] p)  
  50.         {  
  51.             using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))  
  52.             {  
  53.                 using (SQLiteCommand command = new SQLiteCommand())  
  54.                 {  
  55.                     PrepareCommand(command, conn, cmdText, p);  
  56.                     return command.ExecuteNonQuery();  
  57.                 }  
  58.             }  
  59.         }  
  60.  
  61.         public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)  
  62.         {  
  63.             using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))  
  64.             {  
  65.                 using (SQLiteCommand command = new SQLiteCommand())  
  66.                 {  
  67.                     PrepareCommand(command, conn, cmdText, p);  
  68.                     return command.ExecuteReader(CommandBehavior.CloseConnection);  
  69.                 }  
  70.             }  
  71.         }  
  72.  
  73.         public static object ExecuteScalar(string cmdText, params object[] p)  
  74.         {  
  75.             using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))  
  76.             {  
  77.                 using (SQLiteCommand command = new SQLiteCommand())  
  78.                 {  
  79.                     PrepareCommand(command, conn, cmdText, p);  
  80.                     return command.ExecuteScalar();  
  81.                 }  
  82.             }  
  83.         }  
  84.  
  85.     }  

六:附注

SQLite官方網站: http://www.sqlite. org/ 時第一眼看到關于SQLite的特性。

1. ACID事務

2. 零配置 – 無需安裝和管理配置

3. 儲存在單一磁盤文件中的一個完整的數據庫

4. 數據庫文件可以在不同字節順序的機器間自由的共享

5. 支持數據庫大小至2TB

6. 足夠小, 大致3萬行C代碼, 250K

7. 比一些流行的數據庫在大部分普通數據庫操作要快

8. 簡單, 輕松的API

9. 包含TCL綁定, 同時通過Wrapper支持其他語言的綁定

10. 良好注釋的源代碼, 并且有著90%以上的測試覆蓋率

11. 獨立: 沒有額外依賴

12. Source完全的Open, 你可以用于任何用途, 包括出售它

13. 支持多種開發語言,C, PHP, Perl, Java, ASP .NET,Python

原文鏈接:http://www.cnblogs.com/luminji/archive/2010/12/19/1910396.html

【編輯推薦】

  1. C#取整函數實例應用詳解
  2. C#單元測試的一個小故事
  3. C#單元測試概念及作用的淺析
  4. C#單元測試使用的必要性的淺析
  5. C#單元測試的運行淺析
責任編輯:彭凡 來源: 博客園
相關推薦

2024-09-20 18:02:42

C#數據庫SQLite

2024-05-06 06:00:00

C#文件存儲

2018-07-13 09:20:30

SQLite數據庫存儲

2025-02-06 08:06:05

2022-06-01 07:33:29

數據存儲加密

2025-02-27 08:15:28

2024-02-28 08:06:17

2022-12-29 08:57:34

Android本地數據存儲

2009-08-25 17:59:49

C#入門

2011-07-06 11:04:42

C#正則表達式

2009-09-04 14:01:30

C#存儲BLOB對象

2009-08-13 17:58:34

C#存儲過程

2009-08-25 16:29:33

C#使用sqlserv

2009-08-25 16:32:24

C#語言

2021-03-15 08:18:23

C#反射模塊

2009-08-17 13:49:20

C#中調用Window

2012-12-24 09:14:31

ios

2009-08-12 18:35:17

C#數據結構

2024-01-02 13:26:39

TLSC#線程

2009-08-26 18:17:26

C#基于Object解
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 麻豆hd | 国产一区二区三区日韩 | 天堂亚洲| 亚洲精品68久久久一区 | 日韩国产精品一区二区三区 | 久久精品视频播放 | 超级黄色一级片 | 美女视频黄的免费 | 久久99精品久久久久久国产越南 | 蜜桃视频在线观看免费视频网站www | 日韩精品一区二 | 欧美一区二区三区视频 | 成人免费区一区二区三区 | 黄色精品 | 亚洲一区二区三区在线播放 | 日韩一二三 | 欧美日韩国产在线观看 | 久久免费高清 | 日韩在线免费播放 | 翔田千里一区二区 | 日本在线一区二区 | 欧美黄视频 | 欧美一区二区三区在线 | 久久国产婷婷国产香蕉 | 蜜桃视频在线观看www社区 | 一区二区三区视频在线 | 蜜桃综合在线 | 午夜无码国产理论在线 | 久久久久成人精品免费播放动漫 | 国产视频福利在线观看 | 精品少妇一区二区三区日产乱码 | 中文字幕在线一区 | 一区二区三区四区免费观看 | 国产一级片免费在线观看 | 小早川怜子xxxxaⅴ在线 | 国产精品18久久久 | 国产高清久久久 | 欧美一级三级在线观看 | 日本电影免费完整观看 | 成人福利 | 色眯眯视频在线观看 |