.Net程序使用SQLITE3和SQLite3简介 下载本文

内容发布更新时间 : 2024/4/25 21:06:27星期一 下面是文章的全部内容请认真阅读。

.Net程序使用SQLITE3和SQLite3简介

什么是SQLite?

SQLite(www.sqlite.org)是一个嵌入式的数据库管理系统,符合大部分的SQL 92标准,它本身仅仅是一个数百KB的动态链接库。它使用一个文件作为存放全部数据的场所。在应用程序中使用的话不需要任何的配置,十分方便。 何时使用?

SQLite的优点是零配置,对程序所在的计算机没有任何要求——只要有一个dll就可以,因此它尤其适合于作为个人应用程序的数据库,放在托管服务器上的访问流量不十分巨大的网站的数据库,据SQLite官网的说明,对于日点击量小于10万的网站,都是合适的——日点击率超过10万的网站是不多的。

SQLite不提供表级别的锁定,一旦有某个进程有写操作或者启用了事物,就会锁住整个数据库,从而挂起其它进程,因此它不适合于高并发的场合,也不适合C/S程序。 如何使用?

SQLite本身提供了一套C/C++API的说明,另外,还有一个命令行工具。不过,使用都不很方便。要直接操作SQLite数据库,可以使用一个叫做SQLiteExpert的工具,它的Personal版本是可以免费得到的。要在.NET程序中使用SQLite,当然要一个ADO.NET的驱动,这个驱动很容易获得,而且不止一个版本,比较常用的是SQLite.NET,它集成了ADO.NET驱动和VS.NET的设计器支持。

安装了SQLite.NET之后,在VS的Server面板中添加数据库连接,就会有Sqlite的选项:

如果在页面上配置了SqlDataSource,会在webConfig中自动生成一个连接字符串:

providerName=\ />

SQLite的连接字符串很简单,只有一个属性是必填的,那就是data source,data source后面跟上数据库文件的路径就可以,但是如果在托管服务器上,我们无权知道文件所在的绝对路径。可以使用ADO.NET提供的另一种写法:

其中 |DataDirectory|表示网站的App_Data目录。这个方法不仅适合于Sqlite3,对于需要加载文件的数据库,例如Access或者通过SqlExpress附加的SQL Server数据库文件都是适用的。 不同点 (1)数据类型

SQLite与其他常见的DBMS的最大不同是它对数据类型的支持。其他常见的DBMS通常支持强类型的数据,也就是每一列的类型都必须预先指定,但是SQLite采用的是弱类型的字段。实际上,其内部仅有下列五种存储类型: NULL: 表示一个NULL值

INTEGER: 用来存储一个整数,根据大小可以使用1,2,3,4,6,8位来存储. REAL: IEEE 浮点数 TEXT: 按照字符串来存储

BLOB: 按照二进制值存储,不做任何改变.

要注意,这些类型是值本身的属性,而不是列的属性.

但是为了和其他DBMS(以及SQL标准)兼容,在其create table语句中可以指定列的类型,为此,SQLite有个列相似性的概念(Column Affinity). 列相似性是列的属性,SQLite有以下几种列相似性:

TEXT: TEXT列使用NULL,TEXT或者BLOB存储任何插入到此列的数据,如果数据是数字,则转换为TEXT.

NUMERIC: NUMERIC列可以使用任何存储类型,它首先试图将插入的数据转换为REAL或INTEGER型的,如果成功则存储为REAL和INTEGER型,否则不加改变的存入.

INTEGER:和NUMERIC类似,只是它将可以转换为INTEGER值都转换为INTEGER,如果是REAL型,且没有小数部分,也转为INTEGER

REAL: 和NUMERIC类型 只是它将可以转换为REAL和INTEGER值都转换为REAL. NONE:不做任何改变的尝试.

SQLite根据create table语句来决定每个列的列相似性.规则如下(大小写均忽略): 1. 如果数据类型中包括INT,则是INTEGER 2. 如果数据类型中包括CHAR,CLOB,TEXT则是TEXT

3. 如果数据类型中包括BLOB,或者没有指定数据类型,则是NONE 4. 如果数据类型中包括REAL,FLOA或者DOUB,则是REAL