Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1905956
  • 博文数量: 496
  • 博客积分: 12043
  • 博客等级: 上将
  • 技术积分: 4778
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-27 14:26
文章分类

全部博文(496)

文章存档

2014年(8)

2013年(4)

2012年(181)

2011年(303)

2010年(3)

分类: SQLite/嵌入式数据库

2011-04-21 16:02:06

到网站(发现好多非盈利性的机构都爱用org的,呵呵,看来我的还是申请对了,唉,可惜niunan.com被人家拿来了,要不然加上我现在有的niunan.net和niunan.org那就太prefect了!)上下载最新的sqlite,下载下来压缩出来到D盘的sqlitetest目录下,如图:

然后打开CMD命令窗口,切换到D盘的sqlitetest目录下,如图:

新建立一个数据库,在CMD窗口下输入
引用
sqlite3 test
,如图:

test就是我们的数据库文件名,注意这里没有后缀名,实际你也可以给他一个后缀名的,比如sqlite3 test.db,甚至可以是sqlite3 test.php,执行了这条命令之后,假如在当前的sqlitetest目录下没有建立过test数据库的话则是建立一个空的数据库,数据库名叫 test,否则则是打开当前sqlitetest目录下的test数据库,注意,如果是新建立数据库的话那么这时数据库里是空的,这时候在当前的 sqlitetest目录下新建立的数据库test并不会显示出来。如图,这是执行了创建命令之后的sqlitetest目录:

这时我们输入
引用
.database
指令查看当前的数据库信息后,sqlitetest目录下才会生成一个test文件,即我们建立的数据库,如图:

这时候就看到sqlitetest目录生成的test文件了
接下来就轮到建立表了,在官网上看了一下,其实官网上的英文说明文档也都是些简单的英文的,基本上连词成句都能知道是什么意思了,上面说到sqlite数 据库的表的字段的类型其实就5种类型(TEXT、NUMERIC、INTEGER、REAL、NONE),而且好像在建立表的时候写的类型不必写刚刚列出 的几种类型的全称的,上面说
1、如果你写的类型中含有int字符的那么他就是INTEGER
2、如果写的类型中含有"CHAR", "CLOB", 或者 "TEXT" 字符的那么就是TEXT类型
3、如果写的类型中含有 "REAL", "FLOA", 或者 "DOUB" 字符的那么就是REAL类型
4、其他几句英文不太明白说什么了,呵呵,英文好的朋友可以来这里看,
我们试试看创建一张表看看,在这里我创建的同时也设置主键primary key,不知道这个sqlite创建主键是不是这样子设置的,我们输入创建table的指令:
引用
create table person(id int primary key,name nvarchar(10),age integer,address text);
如图:

我们可以看到,如果输入的语句出错的话是会直接在当前命令窗口中提示的,输入正确的话就什么都没提示了,而且每条SQL语句后都必须以分号;结尾,这个和MYSQL一样
我们可以通过
引用
.table
指令来查看当前的数据库中所有的表的信息,如图:

那么除了.database和.table这两个sqlite指令外还有哪些指令呢?我们可以通过
引用
.help
来查看,如图:

注意,在输入sqlite指令的时候不要又多余来个分号;结尾。。。
我们可以看到,又是一大串的E文,其实也都是些简单的E文,连词成句也基本搞掂。。
看到有个
引用
.schema
指令,我们来试试,后面跟的是表的名称,如图:

可以看到,该指令把表的创建语句给我们打出来了。
我们来插入一条数据再选择出来试试看,在这里我不插入ID列,看看有没有什么问题。

我们可以看到,插进去了,但是选出来的前面的ID号是空的,我们再插入一条再选择看看

晕,也能插进去,也能选择出来,那么就是我前面建立的SQL语句中的primary key不起作用了,后来自己上网搜索了一下,发现其实在建立表的时候设置主键的时候必须得写integer primary key,这样在每插入一条数据库时候那个字段都会自动增长的,相应的起到一个主键的功能,我把整个表删除了再重新建立了一次,如图:

OK,这时我们插入数据的时候可以看到,前面的ID字段自增了,嘿嘿。
如果我们有很多条语句要批量插入的话怎么办?我们在sqlitetest目录下建立一个sql_ins.txt文本文档,里面写上我们的插入语句,如图:

然后我们可以使用sqlite中的.read指令来进行读取,如图:

这样我们就成功的导入了我们的数据了。
接下来是一个字段连接的问题,这个问题群里的朋友提过,自己试着用MSSQL的方法测试不成功,正常来说应该是如下SQL语句:
引用
select '姓名:'+name+',年龄:'+age from person;

但是在SQLITE中执行了会选择出错误的数据,最后搜索后发现原来sqlite中的连接字符是||或符号,正确的SQL语句应该是:
引用
select '姓名:'||name||',年龄:'||age from person;


接下来,就是至今为止最激动人心的时刻,就是sqlite的分页,呵呵,和MYSQL一样的,可以直接用limit来进行分页了,就是因为这个,我开始有把我的Access的博客转为sqlite存储数据的冲动了。呵呵。。。

命令行的操作就到这里,接下来该用图形管理工具了。。试用了下,感觉sqlitespy不错,其实我也就用过sqlitespy,其他的管理工具都没用过。。呵呵。。大家可以到该网站下载最新版:
下载下来后解压出来,其实也就两个文件,一个Exe,另一个应该是示例数据库:

运行那个exe文件,可以看到是英文界面,不过都是简单的英文,都应该能看得懂的,打开我们刚刚在命令行下创建的数据库,注意是打开,别选成上面那个new ....新建数据库了。

发现双击了exe文件运行以后目录下又会多出一个SQLiteSpy.db3数据库了,应该是他自动生成的吧

在打开的选择数据库的窗口中看不到我们刚刚建立的test数据库,因为我们没有用到后缀外,软件默认显示的是db3和db后缀名的文件的,我们选择显示所有文件,然后就可以看到了

选择test数据库后打开person表,问题出来了,竟然是乱码,晕。。可是刚刚我们在CMD命令窗口中明明是可以查询出中文出来的

我们执行一条语句看看,F9是执行语句

然后我们再查看表数据,可以看到,插入的中文竟然可以正常显示出来了

晕啊。。搞不懂是怎么回事,应该是编码的问题,可是我GOOGLE了蛮久都没有找到什么解决方法
先不管这些,继续下一步,.NET查询SQLITE,上网找了下,下载System.Data.SQLite.dll,可到这里下载
用VS建立一个网站,把上面下载的DLL放到BIN目录下,然后写代码,和平时写的MSSQL的代码基本一样的,还真不错。

gv是一个gridview控件,这里只是简单的显示表中数据而已,结果出来的界面不出所料,有乱码,郁闷,但是最后一条记录又不是乱码,那条记录是我在sqlitespy软件中添加的

至于怎么解决这个乱码的问题,本人GOOGLE过多次,也找不到解决的方法,只能留待高人解决!!!
认真写篇博客还真累人。。。整整花了一上午。。。
因为这个乱码问题,把我从access转到sqlite的决心又降低了不少!!!
阅读(1002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~