SQLite简单教程
最早使用SQLite是因为sql2005实在是重量了,我的老机器跑的咯吱咯吱了。
而且,Access用得不习惯--指的是.Net的访问。
后来Cnblogs搜索了一下,觉得SQLite不错,因为我的框架本身没有使用存储过程。
废话不多说,言归正传。
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
) ;
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;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。