C#数“.NET研究”据本地存储方案之SQLite
即使是做網(wǎng)絡應用,在斷線情況下,也需要考慮數(shù)據(jù)的本地存儲。在SQLite出現(xiàn)之前,數(shù)據(jù)量大的情況下,我們一直使用ACCESS,數(shù)據(jù)量小,則文件存儲。ACCESS不支持事務原子性,在斷電情況下(這種情況總是會發(fā)生)會導致數(shù)據(jù)很難恢復。
一:安裝
SQLITE,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)上海網(wǎng)站建設庫管理系統(tǒng)。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)。下載完畢是一個EXE,安裝后根目錄如下:
Bin下有一個測試工具,可以查看本地運行SQLITE的各項性能指標。
二:新建數(shù)據(jù)庫
安裝完畢后,打開visual studio,新建數(shù)據(jù)連接,可以看到數(shù)據(jù)源多了一項SQLite。
新建連接,如下圖。SQLITE的數(shù)據(jù)庫,保存后是一個文件。
三:數(shù)據(jù)庫維護
可以在VS中方面的維護SQLITE數(shù)據(jù),如下圖:
可以在VS中使用類似SQL查詢分析器的功能,如下圖:
四:混合模式
安裝完畢,可以直接在項目集的引用中,多了
System.Data.SQLite
System.Data.SQLite.Linq
兩個程序集,由于http://sqlite.phxsoftware.com/的System.Data.SQLite是混合模式程序集,是針對“v2.0.50727”版的運行時生成的,在沒有配置其他信息的情況下,無法在 4.0 運行時中加載該程序集。故需要在App.config中配置如下參數(shù)。
<?xml version="1.0" encoding="utf-8" ?><configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
五:SQLiteHelper
最后,提供一個自己寫的SQLiteHelper:
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;
using System.Data.Common;
namespace Com.Luminji.DataService.SQLHelpers
{
public class SQLiteHelper
{
上海徐匯企業(yè)網(wǎng)站制作style="color: #808080;">/// <summary>
/// ConnectionString樣例:Datasource=Test.db3;Pooling=true;FailIfMissing=false
/// </summary>
public static string ConnectionString { get; set; }
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);
}
}
public static DataSet ExecuteQuery(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
DataSet ds = new DataSet();
PrepareCommand(command, conn, cmdText, p);
SQLiteDataAdapter da = new SQLiteDataAdapter(command);
da.Fill(ds);
return ds;
}
}
}
public static int ExecuteNonQuery(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteNonQuery();
}
}
}
public static SQLiteDataReader ExecuteReader(stringcmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
}
上海徐匯企業(yè)網(wǎng)站設計與制作 }
public static object ExecuteScalar(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return上海企業(yè)網(wǎng)站設計與制作n style="color: #000000;"> command.ExecuteScalar();
}
}
}
}
} 六:附注 SQLite官方網(wǎng)站: http://www.sqlite. org/ 時第一眼看到關(guān)于SQLite的特性。 1. ACID事務 2. 零配置 – 無需安裝和管理配置 3. 儲存在單一磁盤文件中的一個完整的數(shù)據(jù)庫 4. 數(shù)據(jù)庫文件可以在不同字節(jié)順序的機器間自由的共享 5. 支持數(shù)據(jù)庫大小至2TB 上海閔行企業(yè)網(wǎng)站設計與制作> 6. 足夠小, 大致3萬行C代碼, 250K 7. 比一些流行的數(shù)據(jù)庫在大部分普通數(shù)據(jù)庫操作要快 8. 簡單, 輕松的API 9. 包含TCL綁定, 同時通過Wrapper支持其他語言的綁定 10. 良好注釋的源代碼, 并且有著90%以上的測試覆蓋率 11. 獨立: 沒有額外依賴 12. Source完全的Open, 你可以用于任何用途, 包括出售它 13. 支持多種開發(fā)語言,C, PHP, Perl, Java, ASP .NET,Python
轉(zhuǎn)載于:https://www.cnblogs.com/waw/archive/2011/10/18/2217036.html
總結(jié)
以上是生活随笔為你收集整理的C#数“.NET研究”据本地存储方案之SQLite的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET的地址重写“.NET研究”
- 下一篇: LightSwitch 2011 数据字