`
niunan
  • 浏览: 721129 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

牛腩学习sqlite - 简记

    博客分类:
  • SQL
阅读更多
    到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的决定又降低了不少!!!
3
0
分享到:
评论
1 楼 84707227 2011-10-14  
windows的编码是GBK,sqlite的默认编码是UTF-8,你用控制台insert的话默认是GBK的编码,所以会有乱码。建议用开发工具,比如SQLite Expert Professional 3等来开发这个数据库。

相关推荐

    sqlite-jdbc-3.34.0-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.34.0.jar; 赠送原API文档:sqlite-jdbc-3.34.0-javadoc.jar; 赠送源代码:sqlite-jdbc-3.34.0-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.34.0.pom; 包含翻译后的API文档:...

    sqlite-jdbc-3.15.1-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.15.1.jar; 赠送原API文档:sqlite-jdbc-3.15.1-javadoc.jar; 赠送源代码:sqlite-jdbc-3.15.1-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.15.1.pom; 包含翻译后的API文档:...

    sqlite-autoconf-3420000

    "sqlite-autoconf-3420000" 是 SQLite 的一个特定版本,这个版本号表明它是在 SQLite 发展历程中的某个特定时间点发布的。通常,这种命名方式意味着这是一个自动配置版本,方便在多种环境中编译和安装。 该压缩包...

    sqlite-jdbc-3.32.3.2.jar-支持信创环境loongarch64、mips64el

    "sqlite-jdbc-3.32.3.2.jar"是这个驱动程序的特定版本,它包含了用于连接SQLite数据库的必要组件。 这个版本的sqlite-jdbc驱动特别强调对信创(创新信息技术)环境的支持,这通常指的是中国自主研发的CPU架构和操作...

    sqlite-jdbc-3.36.0.3.jar

    sqlite-jdbc-3.36.0.3.jar 最新吧2021 8月底更新

    geoserver-2.15-SNAPSHOT-gwc-sqlite-plugin.zip

    在本例中,我们关注的是GeoServer的一个特定插件——"gwc-sqlite-plugin",这是针对GeoServer的全球瓦片缓存(Global Web Coverage Service, GWC)功能的SQLite扩展。 GeoServer的GWC功能允许高效地存储和分发地理...

    sqlite-tools-win32-x86-3290000

    sqlite-tools-win32-x86-3290000 是一个SQLite数据库工具在Windows 32位系统上的安装包或目录名称。SQLite是一个C库,提供了一个轻量级的磁盘文件数据库,不需要一个单独的服务器进程或操作系统(不需要配置、安装或...

    sqlite-devel-3.7.17-8.el7.x86_64.rpm

    sqlite-devel-3.7.17-8.el7.x86_64.rpm

    sqlite-jdbc-3.30.1.jar

    SQLite数据库是文档型数据库,其具备体积小移动方便等特点;以下jar包:sqlite-jdbc-3.30.1.jar文件为SQLite数据库对应的数据库驱动jar包;

    sqlite-autoconf-3080800.tar.gz

    "sqlite-autoconf-3080800.tar.gz" 是一个包含SQLite源代码的压缩包,版本号为3080800,通过自动配置脚本编译。这个文件通常用于开发环境,允许开发者在自己的系统上编译和定制SQLite库。 SQLite的特性包括: 1. *...

    sqlite-tools-win-x64-3440200.zip

    "sqlite-tools-win-x64-3440200.zip"这个压缩包包含了三个主要的SQLite实用工具,它们分别是sqlite3_analyzer.exe、sqlite3.exe和sqldiff.exe。 1. **sqlite3.exe**:这是SQLite的命令行接口,也是最基础的工具。...

    sqlite-autoconf-3330000.tar.gz

    SQLite3是一种轻量级、...总的来说,"sqlite-autoconf-3330000.tar.gz"是SQLite3的一个重要版本,提供了完整的源代码,为开发者提供了高度的定制性和灵活性,无论是用于学习、开发还是生产环境,都是一个宝贵的资源。

    sqlite-jdbc-3.31.1.zip

    在本案例中,“sqlite-jdbc-3.31.1.zip”是一个包含SQLite JDBC驱动的压缩包,版本号为3.31.1,用于在Java环境中通过JDBC方式连接和操作加密后的SQLite数据库。 首先,我们需要了解如何在Java项目中使用sqlite-jdbc...

    sqlite-jdbc-3.34.0.jar

    sqlite-jdbc-3.34.0.jar,支持M1芯片了,Android Studio可以正常链接手机了

    sqlite-autoconf-3071000.tar.gz

    标题“sqlite-autoconf-3071000.tar.gz”指的是SQLite3的一个特定版本的源代码包,其中“sqlite-autoconf-3071000”是该版本的标识符,而“.tar.gz”表示这是一个使用gzip压缩的tar归档文件。这种格式在Linux和Unix-...

    sqlite-autoconf-3320300.tar.gz

    sqlite-autoconf-3320300 嵌入式数据库源码.编译命令:./configure --host=arm-linux(这里根据需要可以改为gcc,即省去该配置参数(删除--host),默认使用gcc) --prefix=/tmp/build

    Sqlite-jdbc-3.7.2.jar和sqlite-jdbc-3.20.1.jar上传,亲测可用

    本主题主要围绕“Sqlite-jdbc-3.7.2.jar”和“sqlite-jdbc-3.20.1.jar”两个Java JDBC驱动进行讨论,它们是Java连接SQLite数据库的关键组件。 Sqlite-jdbc驱动是Java开发者用来与SQLite数据库进行交互的桥梁。JDBC...

    sqlite-netFx46-setup-bundle SQlLite驱动下载

    标题"sqlite-netFx46-setup-bundle SQlLite驱动下载"指的是SQLite针对.NET Framework 4.6的安装包。这个安装包包含了SQLite驱动程序,使得.NET开发者可以在他们的应用程序中无缝地集成SQLite数据库。这适用于那些...

    sqlite-autoconf-3290000.tar.gz

    `sqlite-autoconf-3290000.tar.gz` 是SQLite的一个源码包,版本号为3290000,通过这个包我们可以获取SQLite的原始代码并进行自定义编译和安装。 首先,让我们详细了解一下源码编译的基本步骤: 1. **解压缩**:...

    sqlite jdbc jar java jdbc 链接 sqlite sqlite-jdbc-3.8.11.1.jar

    在本场景中,我们关注的是如何使用 `sqlite-jdbc-3.8.11.1.jar` 这个特定版本的驱动来实现 Java 与 SQLite 的交互。 首先,要使用 SQLite JDBC,你需要将 `sqlite-jdbc-3.8.11.1.jar` 添加到你的项目类路径中。如果...

Global site tag (gtag.js) - Google Analytics