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

一:安装

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

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

二:新建数据库

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

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

三:数据库维护

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

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

四:混合模式

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

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>
</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{/// <summary>/// ConnectionString样例:Data Source=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(string cmdText, params object[] p){using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)){using (SQLiteCommand command = new SQLiteCommand()){PrepareCommand(command, conn, cmdText, p);return command.ExecuteReader(CommandBehavior.CloseConnection);}}}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 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

本文出处:http://www.cnblogs.com/luminji/

转载于:https://www.cnblogs.com/zhangchenliang/archive/2012/04/12/2443994.html

C#数据本地存储方案之SQLite相关推荐

  1. C#数“.NET研究”据本地存储方案之SQLite

    即使是做网络应用,在断线情况下,也需要考虑数据的本地存储.在SQLite出现之前,数据量大的情况下,我们一直使用ACCESS,数据量小,则文件存储.ACCESS不支持事务原子性,在断电情况下(这种情况 ...

  2. PC端本地存储方案,Windows和Mac双端通用方案

    功能要求:缓存数据 没有频繁的读写,存储服务端下发的数据,当数据有更新的时候,本地存储会进行更新,同时刷新内存. 本地存储作为持久化储存方案,程序每次启动时会读取数据加载到内存,当数据有更新的时候,也 ...

  3. 高性能、免运维,博云开源云原生本地存储方案:Carina

    2021 年 10 月 11 日,博云正式开源 Carina 本地存储方案,Carina 基于 Kubernetes 及 LVM 实现,提供了数据库与中间件等有状态应用在 Kubernetes 中运行 ...

  4. uniapp结合腾讯云及时通信IM的聊天记录本地存储方案

    uniapp结合腾讯云及时通信IM的聊天记录本地存储方案 UniApp 是一个跨平台的应用开发框架,可以使用 Vue.js 开发多端应用(如H5.小程序.App等).在 UniApp 中,可以使用 u ...

  5. 数据本地存储方法封装(笔记)localStorage、sessionStorage

    数据本地存储方法封装(笔记)localStorage.sessionStorage 方法: import storage from 'good-storage'const SELLER_KEY = ' ...

  6. 年轻人不讲武德,TDengine边缘侧数据存储方案挑战SQLite

    上周,涛思数据与EMQ在线上Meetup上联合发布了工业互联网一体化解决方案,基于TDengine.EMQ X搭建一个集工业数据采集.汇聚.清洗.存储分析以及可视化展示等能力于一体的轻量级边缘计算工业 ...

  7. uniapp本地数据库_Uniapp教程|App/uni-app离线本地存储方案

    5+App的离线存储 HTML5+的离线本地存储有如下多种方案: HTML5标准方案:cookie.localstorage.sessionstorage.websql.indexedDB HTML5 ...

  8. Ripple数据本地存储概览

    1.数据文件及介绍 1.1 Sqlite数据 文件 包含表 内容 Ledger.db Ledgers 区块信息 Ledger.db Validations 本地历史区块共识信息 Transaction ...

  9. TableStore: 海量结构化数据分层存储方案

    2019独角兽企业重金招聘Python工程师标准>>> 前言 表格存储是阿里云自研分布式存储系统,可以用来存储海量结构化.半结构化的数据.表格存储支持高性能和容量型两种实例类型.高性 ...

最新文章

  1. python统计linux流量,通过Python进行MySQL表信息统计
  2. mssql 查询当前自增序号_查询函数Choose、Lookup、Hlookup、Vlookup应用技巧解读
  3. IOS第二天多线程-04简化单例模式
  4. 优秀!结构最清晰的Yolov3 head和loss实现完全解析
  5. EXTRONICS推出IRFID500便携式UHF RFID读写器
  6. Codeforces 1041C(贪心+set)
  7. 汽车系统实现--搜索功能
  8. 一个面试题关于变量的生命周期
  9. JavaScript 弹出层,背景变暗
  10. C++打印size_t和ssize_t和int64_t和uint64_t
  11. python消费kafka逻辑处理导致cpu升高_Kafka 消费迟滞监控工具 Burrow
  12. HAproxy配置文件操作
  13. chrome浏览器再次打开黑屏一段时间
  14. 如何查看虚拟机服务器ftp,如何通过FTP工具查看虚拟空间使用了多少?
  15. 群消息已读回执(这个diao),究竟是推还是拉?
  16. 教你实现微信8.0『炸裂』的表情特效
  17. Learning Framer X 学习Framer X Lynda课程中文字幕
  18. Java中带返回值的线程池Future
  19. JavaScript之DOM学习笔记
  20. 团队Github实战训练

热门文章

  1. 数组转换成json key-value形式
  2. 如何修改ECShop发货单查询显示个数
  3. RabbitMQ学习及实践3--SpringMVC实现
  4. 冲突域、广播域的通俗讲解
  5. 调试U-Boot笔记(一)
  6. POJ_2593最大两不想交子段和问题
  7. 隐藏帐户与隐藏权限的添加
  8. orale客户端与数据库连接
  9. LI标签在Ul中居中显示
  10. Centos7 CMake升级