设为首页 收藏本站
查看: 885|回复: 0

[经验分享] 牛腩学习sqlite - 简记

[复制链接]

尚未签到

发表于 2016-11-29 08:07:28 | 显示全部楼层 |阅读模式
到http://www.sqlite.org网站(发现好多非盈利性的机构都爱用org的,呵呵,看来我的http://www.niunan.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、其他几句英文不太明白说什么了,呵呵,英文好的朋友可以来这里看,http://www.sqlite.org/datatype3.html
        我们试试看创建一张表看看,在这里我创建的同时也设置主键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语句:
[sql]select '姓名:'+name+',年龄:'+age from person;
[/sql]    但是在SQLITE中执行了会选择出错误的数据,最后搜索后发现原来sqlite中的连接字符是||或符号,正确的SQL语句应该是:
[sql]select '姓名:'||name||',年龄:'||age from person;
[/sql]   
    接下来,就是至今为止最激动人心的时刻,就是sqlite的分页,呵呵,和MYSQL一样的,可以直接用limit来进行分页了,就是因为这个,我开始有把我的Access的博客转为sqlite存储数据的冲动了。呵呵。。。
   
    命令行的操作就到这里,接下来该用图形管理工具了。。试用了下,感觉sqlitespy不错,其实我也就用过sqlitespy,其他的管理工具都没用过。。呵呵。。大家可以到该网站下载最新版:http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index    下载下来后解压出来,其实也就两个文件,一个Exe,另一个应该是示例数据库:
   
    运行那个exe文件,可以看到是英文界面,不过都是简单的英文,都应该能看得懂的,打开我们刚刚在命令行下创建的数据库,注意是打开,别选成上面那个new ....新建数据库了。
   
    发现双击了exe文件运行以后目录下又会多出一个SQLiteSpy.db3数据库了,应该是他自动生成的吧
   
    在打开的选择数据库的窗口中看不到我们刚刚建立的test数据库,因为我们没有用到后缀外,软件默认显示的是db3和db后缀名的文件的,我们选择显示所有文件,然后就可以看到了
   
    选择test数据库后打开person表,问题出来了,竟然是乱码,晕。。可是刚刚我们在CMD命令窗口中明明是可以查询出中文出来的
   
    我们执行一条语句看看,F9是执行语句
   
    然后我们再查看表数据,可以看到,插入的中文竟然可以正常显示出来了
   
    晕啊。。搞不懂是怎么回事,应该是编码的问题,可是我GOOGLE了蛮久都没有找到什么解决方法
    先不管这些,继续下一步,.NET查询SQLITE,上网找了下,下载System.Data.SQLite.dll,可到这里下载http://sqlite.phxsoftware.com/    用VS建立一个网站,把上面下载的DLL放到BIN目录下,然后写代码,和平时写的MSSQL的代码基本一样的,还真不错。
   
gv是一个gridview控件,这里只是简单的显示表中数据而已,结果出来的界面不出所料,有乱码,郁闷,但是最后一条记录又不是乱码,那条记录是我在sqlitespy软件中添加的
   
    至于怎么解决这个乱码的问题,本人GOOGLE过多次,也找不到解决的方法,只能留待高人解决!!!
    认真写篇博客还真累人。。。整整花了一上午。。。因为这个乱码问题,把我从access转到sqlite的决定又降低了不少!!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306880-1-1.html 上篇帖子: java使用sqlite数据库 下篇帖子: (转)SQLite适用的范围
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表