加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

C#数据本地存储方案之SQLite

发布时间:2021-07-06 05:53:25 所属栏目:大数据 来源: https://blog.csdn.net/kasama1
导读:本文基于 Creative Commons Attribution 2.5 China Mainland License 发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji (包含链接)。 即使是做网络应用,在断线情况下,也需要考虑数据的本地存储。在sqlite出

本文基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名http://www.cnblogs.com/luminji(包含链接)。


即使是做网络应用,在断线情况下,也需要考虑数据的本地存储。在sqlite出现之前,数据量大的情况下,我们一直使用ACCESS,数据量小,则文件存储。ACCESS不支持事务原子性,在断电情况下(这种情况总是会发生)会导致数据很难恢复。

?

一:安装

sqlITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the sqlite database engine)。下载完毕是一个EXE,安装后根目录如下:

PS: UPDATED IN 2013-06-04,原网站已经不存在,现在已经更新到:http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

clip_image002

Bin下有一个测试工具,可以查看本地运行sqlITE的各项性能指标。

二:新建数据库

安装完毕后,打开visual studio,新建数据连接,可以看到数据源多了一项sqlite。

clip_image004

新建连接,如下图。sqlITE的数据库,保存后是一个文件。

clip_image006

三:数据库维护

可以在VS中方面的维护sqlITE数据,如下图:

clip_image008

可以在VS中使用类似SQL查询分析器的功能,如下图:

clip_image010

四:混合模式

安装完毕,可以直接在项目集的引用中,多了

System.Data.sqlite

System.Data.sqlite.Linq

两个程序集,由于http://sqlite.phxsoftware.com/的System.Data.sqlite是混合模式程序集,是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。故需要在App.config中配置如下参数。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  startup useLegacyV2RuntimeActivationPolicy="true">
    supportedRuntime version="v4.0"/>
  </startup>
>

??

五: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 { /// <summary> /// ConnectionString样例:Data Source=Test.db3;Pooling=true;FailIfMissing=false /// </summary> static string ConnectionString { get; set; } private void PrepareCommand(sqliteCommand cmd,sqliteConnection conn,string cmdText,255)">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); } } static DataSet ExecuteQuery(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; } } } int ExecuteNonQuery(new sqliteCommand()) { PrepareCommand(command,p); return command.ExecuteNonQuery(); } } } static sqliteDataReader ExecuteReader(return command.ExecuteReader(CommandBehavior.CloseConnection); } } } object ExecuteScalar(return command.ExecuteScalar(); } } } } } ? 六:附注 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

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读