日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#中數(shù)據(jù)本地存儲方案之SQLite

即使是做網(wǎng)絡(luò)應(yīng)用,在斷線情況下,也需要考慮數(shù)據(jù)的本地存儲。在SQLite出現(xiàn)之前,數(shù)據(jù)量大的情況下,我們一直使用ACCESS,數(shù)據(jù)量小,則文件存儲。ACCESS不支持事務(wù)原子性,在斷電情況下(這種情況總是會發(fā)生)會導(dǎo)致數(shù)據(jù)很難恢復(fù)。

創(chuàng)新互聯(lián)公司專注于岳塘企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,電子商務(wù)商城網(wǎng)站建設(shè)。岳塘網(wǎng)站建設(shè)公司,為岳塘等地區(qū)提供建站服務(wù)。全流程按需開發(fā)網(wǎng)站,專業(yè)設(shè)計,全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

一:安裝

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

Bin下有一個測試工具,可以查看本地運(yùn)行SQLITE的各項(xiàng)性能指標(biāo)。

二:新建數(shù)據(jù)庫

安裝完畢后,打開visual studio,新建數(shù)據(jù)連接,可以看到數(shù)據(jù)源多了一項(xiàng)SQLite。

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

三:數(shù)據(jù)庫維護(hù)

可以在Visual Studio中方面的維護(hù)SQLITE數(shù)據(jù),如下圖:

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

四:混合模式

安裝完畢,可以直接在項(xiàng)目集的引用中,多了

System.Data.SQLite

System.Data.SQLite.Linq

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

 
 
 
 
  1.  
  2.  
  3.    
  4.      
  5.    
  6.  

五: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.         ///   
  14.         /// ConnectionString樣例:Datasource=Test.db3;Pooling=true;FailIfMissing=false  
  15.         ///   
  16.         public static string ConnectionString { get; set; }  
  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官方網(wǎng)站: http://www.sqlite. org/ 時第一眼看到關(guān)于SQLite的特性。

1. ACID事務(wù)

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

3. 儲存在單一磁盤文件中的一個完整的數(shù)據(jù)庫

4. 數(shù)據(jù)庫文件可以在不同字節(jié)順序的機(jī)器間自由的共享

5. 支持?jǐn)?shù)據(jù)庫大小至2TB

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

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

8. 簡單, 輕松的API

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

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

11. 獨(dú)立: 沒有額外依賴

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

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


本文題目:C#中數(shù)據(jù)本地存儲方案之SQLite
本文鏈接:http://www.5511xx.com/article/dhsescc.html