[转]SQLite内存数据库

http://www.cnblogs.com/liuyong/archive/2010/09/14/1826152.html

SQLite 介绍
一. SQLite 是实现了SQL 92标准的一个大子集的嵌入式数据库.其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中而著名.我觉得SQLite的功能一定程度上居于MySQL 和PostgreSQL之间.尽管如此,在性能上面,SQLite常常快2-3倍 (甚至更多).这利益于其高度调整了的内部架构,因为它除去了服务器端到客户端和客户端到服务器端的通信。

二. 而令人印象深刻的特点是你可将你的整个数据库系统放在其中.利用非常高效的内存组织,SQLite只需在很小的内存中维护其很小的尺寸,远远比其它任何数据库系统都小.这些特点使得其成为在需要高效地应用数据库的任务中一个非常方便的工具.

SQLite 优势
一 . 除了速度和效率,SQLite还有其它好多的优势使得其能成为许多任务中一个理想的解决方案.因为SQLite的数据库都是简单文件,因此无须一个管理队伍花时间来构造复杂的权限结构来保护用户的数据库.因为权限通过文件系统自动进行.这也同时意味着(数据库空间的大小只与环境有关,与本身无关)无段特殊的规则来了解用户磁盘空间.用户可以从创建他们想要的任意多的数据库和对其对这些数据库的绝对控制权而得到好处.

二  . 数据库就是一个文件的事实使用SQLite可以轻易地在服务器间移动.SQLite也除去了需要大量内存和其它系统资源的伺候进程.即使当数据库在大量地使用时也是如此.

创建内存数据库

1.由于业务的需要,我使用SQLite 内存数据库制作一个缓存,IIS 停止内存数据库的数据全部丢失,不知道SQLite  是否可以做分布式的内存数据管理。

2.添加using System.Data.SQLite  引用,程序集请到这里http://sqlite.phxsoftware.com/ 下载

3.创建内存数据库 , Data Source=:memory:;Version=3;  这个连接字符串折腾了很久, 当然这里也可以使用文件来存储数据,只需要修改 Data Source=:memory:  为  Data Source= Cache.db  就ok !当然这个表需要在Global 里面创建

SQLiteConnection conn = (SQLiteConnection)new SQLiteConnection("Data Source=:memory:;Version=3; Cache Size = 3000;New=True;Pooling=False;Max Pool Size=100;LongNames = 0; Timeout = 1000; NoTXN = 0; SyncPragma = NORMAL; StepAPI = 0");
               conn.Open();
               IDbCommand dbcmd = conn.CreateCommand();
//创建内存表
string sql = "CREATE TABLE [AvTable] ( [ID] INTEGER  PRIMARY KEY NOT NULL,[CityPair] VARCHAR(6)  NULL,[FlightNo] VARCHAR(50)  NULL,[FlightDate] VARCHAR(10)  NULL,[CacheTime] VARCHAR(2000)  NULL,[AVNote] VARCHAR(2000)  NULL)";
               dbcmd.CommandText = sql;
               dbcmd.Connection = conn;
               dbcmd.ExecuteNonQuery();
               SQLiteConn = conn;

全局属性,打开数据库连接后创建好表后赋值给这个属性,以后操作数据一致使用这个连接。

public static SQLiteConnection SQLiteConn { get; set; }

使用SQL  语句操作表如下, sql 是代表sql 语句

string sql = "Update AVTable Set CityPair='" + av.CityPair + "',CacheTime='" + DateTime.Now.ToString() + "',AVNote='" + av.AVNote + "' Where FlightNo='" + av.FlightNo + "' And FlightDate='" + av.FlightDate + "'";
               IDbCommand dbcmd = MemoryDatabse.SQLiteConn.CreateCommand();
               dbcmd.CommandText = sql;
               dbcmd.Connection = MemoryDatabse.SQLiteConn;
int count = dbcmd.ExecuteNonQuery();

SQLite 的查询语法 和 SQL SERVER 有一些区别 。

提取 avcache表 11-20 的数据 。

Select * From avcache Limit 9 Offset 10;     以上语句表示从avcache 表获取数据,跳过10行,取9行 。

另外一种写法, 从10 开始提取 提取9条数据 。

select * from avcache limit10,9

语法

sql = "select * from avcache  where "+条件+" order by "+排序+" limit "+要显示多少条记录+" offset "+跳过多少条记录;

例子

select * from avcache limit 15 offset 20      意思是说:   从avcache  表跳过20条记录选出15条记录

SQLite内存数据库的更多相关文章

  1. FIREDAC操作SQLITE内存数据库

    SQLite不仅可以把数据库放在硬盘上,还可以放在内存中,经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍. 但数据库放在内存中时有如下缺陷: 1.断电或程序崩溃后数据库就会消失 ...

  2. 【原创】System.Data.SQLite内存数据库模式

    对于很多嵌入式数据库来说都有对于的内存数据库模式,SQLite也不例外.内存数据库常常用于极速.实时的场景,一个很好的应用的场景是富客户端的缓存数据,一般富客户端的缓存常常需要分为落地和非落地两种,而 ...

  3. ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库

    SQLite 内存数据库(in-memory database)的连接字符串是  Data Source=:memory: ,它的特点是数据库连接一关闭,数据库就会被删除.而使用  services. ...

  4. sqlite内存数据库和文件数据库的同步[转]

    由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作sqlite内存数据库,并将内存数据库定时同步到文件数据库中的方法. 实现思路如下: ...

  5. Android provider中使用sqlite内存数据库

    sqlite是支持内存数据库的,在Android中,我们可以通过provider实现内存数据库操作.内存数据库的优点,访问速度快,但在连接关闭后,数据库自动消失(在android中的表现是,provi ...

  6. SQLite内存数据库操作类

    using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...

  7. 轻量级开源嵌入式关系数据库sqlite基本使用及接口初识

    preface,先闲来扯下蛋: 嵌入式数据库,NoSQL的是BerkeleyDB和InnoDB,leveDb.TC(个人较不熟悉),关系型嵌入式是SQLite; 服务器性质的NoSQL服务器,如Red ...

  8. SQLite 剖析

    由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作sqlite内存数据库,并将内存数据库定时同步到文件数据库中的方法. 实现思路如下: ...

  9. 使用嵌入式关系型SQLite数据库存储数据

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...

随机推荐

  1. dict 字典

    Python 学习笔记[dict的操作方法] Python中dict详解

  2. T-SQL备忘(1):表联接

    测试用例表如下: 1.取2个成员表中的交集(A∩B) T-SQL: select Member1.Name,Member1.Age from Member1 join Member2 on Membe ...

  3. IOS的XML文件解析,利用了NSData和NSFileHandle

    如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...

  4. oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

    15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...

  5. 编程式事务、XML配置事务、注解实现事务

    Spring2.0框架的事务处理有两大类: 1 编码式事务 , 这个不说. 2 声明式事务 , 就说这个. 声明式事务又有三种实现方法: 1 (第一种) 最早的方法,用TransactionProxy ...

  6. Webdriver API (三)- actions

    Actions类主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用perform()方法进行执行. actions类可以完成单一的操作,也可以完成几个操作的组合. 有 ...

  7. SQL数据库面试题以及答案

    Student(stuId,stuName,stuAge,stuSex) 学生表 stuId:学号:stuName:学生姓名:stuAge:学生年龄:stuSex:学生性别 Course(course ...

  8. 【和我一起学python吧】初学Python,版本如何选择?

    早在四年多以前,在我进入英才网之前,去面试过一家海归创业的公司.他们需要的是有unix开发经验的技术人员,但是因为他们当时所处的阶段对很多成熟 技术人员不是很吸引,所以条件放宽为熟悉面向对象的程序开发 ...

  9. HTML 5的消息通知机制

    译文来源:http://www.ido321.com/1130.html 原文:HTML 5 Notification 译文:HTML 5 的消息通知机制 译者:dwqs HTML 5 已经被应用到W ...

  10. sgu 194 Reactor Cooling(有容量上下界的无源无汇可行流)

    [题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20757 [题意] 求有容量上下界的无源无汇可行流. [思路] ...