在.net中使用sqlite

1 篇文章 0 订阅
1 篇文章 0 订阅
 
1。从www.sqlite.org下载SQLite 3.3.4的版本
为了方便,我把它解压了,就一个SQLite3.exe,放入Windows目录下。
Cmd 进入命令行
1)
创建数据库文件:
>SQLite3 d:\test.db 回车
就生成了一个test.db在d盘。
这样同时也SQLite3挂上了这个test.db
2)?
用.help可以看看有什么命令
>.help 回车即可
3)可以在这里直接输入 SQL语句创建表格 用;结束,然后回车就可以看到了
4)看看有创建了多少表
>.tables?
5)看表结构
>.schema 表名
6)看看目前挂的数据库
>.database
7)如果要把查询输出到文件
>.output 文件名
> 查询语句;
查询结果就输出到了文件c:\query.txt

把查询结果用屏幕输出
>.output stdout

8)把表结构输出,同时索引也会输出
.dump 表名
9)退出
>.exit 或者.quit

2。从http://sqlite.phxsoftware.com/下载Ado.net驱动。
下载了安装,在安装目录中存在System.Data.SQLite.dll
我们只需要拷贝这个文件到引用目录,并添加引用即可对SQLite数据库操作了
所有的Ado.net对象都是以SQLite开头的,比如SQLiteConnection
连接串只需要如下方式
Data Source=d:\test.db 或者DataSource=test.db--应用在和应用程序或者.net能够自动找到的目录
剩下的就很简单了~~

3。 SQL语法
由于以前用SQLServer或者ISeries,所以DDL的语法很汗颜
1)创建一个单个Primary Key的table
CREATE TABLE [Admin] (
[UserName] [nvarchar] (20) PRIMARY KEY NOT NULL ,
[Password] [nvarchar] (50) NOT NULL ,
[Rank] [smallint] NOT NULL ,
[MailServer] [nvarchar] (50) NOT NULL ,
[MailUser] [nvarchar] (50) NOT NULL ,
[MailPassword] [nvarchar] (50) NOT NULL ,
[Mail] [nvarchar] (50) NOT NULL?
) ;

CREATE TABLE [ESOA_User] (
[UID] [integer] PRIMARY KEY NOT NULL ,
[U_Account] [varchar] (50) NOT NULL ,
[U_Password] [varchar] (50) NOT NULL ,
[U_UserName] [varchar] (50) NOT NULL ,
[U_Company] [varchar] (100) NULL ,
[U_DepartmentID] [integer] NOT NULL ,
[U_Tel] [varchar] (50) NULL ,
[U_QQ] [varchar] (50) NULL ,
[U_Address] [varchar] (100) NULL ,
[U_Post] [varchar] (10) NULL ,
[U_UserGroup] [integer] NOT NULL ,
[U_Power] [varchar] (50) NULL ,
[U_Lock] [tinyint] NOT NULL ,
[U_Memo] [text] NULL?
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


2)创建一个多个Primary Key的table
CREATE TABLE [CodeDetail] (
[CdType] [nvarchar] (10) NOT NULL ,
[CdCode] [nvarchar] (20) NOT NULL ,
[CdString1] [ntext] NOT NULL ,
[CdString2] [ntext] NOT NULL ,
[CdString3] [ntext] NOT NULL,
PRIMARY KEY (CdType,CdCode)
) ;
3)创建索引
CREATE INDEX [IX_Account] ON [Account]([IsCheck], [UserName]);
还可以视图等等。
4.还有很有用的 SQL
Select * from Sqlite_master?
Select datetime('now')
Select date('now')
Select time('now')
以及很多函数,具体可以参考SQLite的wiki.

oh,还有就是看到有人说,好像成批插入的时候,启动事务,比不启动事务快n倍
还有就是尽量使用参数化的 SQL,估计和商用DB一样能够自动Prepare.

===========

sqlite可以在shell/dos command底下直接执行命令:

sqlite3 film.db "select * from film;"

输出 HTML 表格:

sqlite3 -html film.db "select * from film;"

将数据库「倒出来」:

sqlite3 film.db ".dump" > output. sql

利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的 SQL数据库备份了):

sqlite3 film.db < output. sql

在大量插入资料时,你可能会需要先打这个指令:

begin;

插入完资料后要记得打这个指令,资料才会写进数据库中:

commit;?
;

------------------------------------

System.Data.Sqlite入手。。。?
首先import/using:

代码
using System.Data.SQLite;
Connection和Command:

代码
private SQLiteConnection conn;
private SQLiteCommand cmd;
连接db:

代码
conn = new SQLiteConnection("Data Source=c:\\test.db");
conn.Open();
INSERT/UPDATE:


代码
cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO user(email,name) VALUES ('email','name')";
cmd.ExecuteNonQuery();
cmd.CommandText = "UPDATE userSET name = 'Codelicious' WHERE ID = 1";
cmd.ExecuteNonQuery();
SELECT:


代码
cmd.CommandText = "SELECT ID, name FROM user";
SQLiteDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine("ID: " + reader.GetInt16(0));
Console.WriteLine("name: " + reader.GetString(1));
}
}



---


sqlite是最近比较火的一个小型embeddable RDBMS。 用C实现的,开源,memory footprint非常小,而且对不同的语言有很多wrapper支持。

在.NET中使用sqlite,其实很简单,主要是找个.NET的wrapper。看了几个,最终选了phpguru
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值