文档库 最新最全的文档下载
当前位置:文档库 › sqlite常用函数

sqlite常用函数

sqlite常用函数
sqlite常用函数

一、聚合函数:

SQLite 中支持的聚合函数在很多其他的关系型数据库中也同样支持,因此我们这里

将只是给出每个聚集函数的简要说明,而不在给出更多的示例了。这里还需要进一步说明的

是,对于所有聚合函数而言,distinct 关键字可以作为函数参数字段的前置属性,以便在进

行计算时忽略到所有重复的字段值,如count(distinct x)。

函数

说明 avg(x)

该函数返回在同一组内参数字段的平均值。对于不能转换为数字值的String 和BLOB 类型的字段值,如'HELLO',SQLite 会将其视为0。avg 函数的结果总是浮点型,唯一的例外是所有的字段值均为NULL ,那样该函数的结果也为NULL 。 count(x|*) count(x)函数返回在同一组内,x 字段中值不等于NULL 的行数。count(*)函数返回在同一组内的数据行数。

group_concat(x[,y]) 该函数返回一个字符串,该字符串将会连接所有非NULL 的x 值。该函数的y 参数将作为每个x 值之间的分隔

符,如果在调用时忽略该参数,在连接时将使用缺省分隔符","。再有就是各个字符串之间的连接顺序是不确定

的。

max(x)

该函数返回同一组内的x 字段的最大值,如果该字段的所有值均为NULL ,该函数也返回NULL 。 min(x)

该函数返回同一组内的x 字段的最小值,如果该字段的所有值均为NULL ,该函数也返回NULL 。 sum(x) 该函数返回同一组内的x 字段值的总和,如果字段值均为NULL ,该函数也返回NULL 。如果所有的x 字段值均为整型或者NULL ,该函数返回整型值,否则就返回浮点型数值。最后需要指出的是,如果所有的数据值均

为整型,一旦结果超过上限时将会抛出"integer overflow"的异常。

total(x) 该函数不属于标准SQL ,其功能和sum 基本相同,只是计算结果比sum 更为合理。比如当所有字段值均为NULL

时,和sum 不同的是,该函数返回0.0。再有就是该函数始终返回浮点型数值。该函数始终都不会抛出异常。

二、核心函数:

以下函数均为SQLite 缺省提供的内置函数,其声明和描述见如下列表:

函数

说明 abs(X)

该函数返回数值参数X 的绝对值,如果X 为NULL ,则返回NULL ,如果X 为不能转换成数值的字符串,则返回0,如果X 值超出Integer 的上限,则抛出"Integer Overflow"的异常。 changes() 该函数返回最近执行的INSERT 、UPDATE 和DELETE 语句所影响的数据行数。我们也可以通过执行C/C++函数

sqlite3_changes()得到相同的结果。

coalesce(X,Y ,...) 返回函数参数中第一个非NULL 的参数,如果参数都是NULL ,则返回NULL 。该函数至少2个参数。 ifnull(X,Y) 该函数等同于两个参数的coalesce()函数,即返回第一个不为NULL 的函数参数,如果两个均为NULL ,则返回

NULL 。

length(X) 如果参数X 为字符串,则返回字符的数量,如果为数值,则返回该参数的字符串表示形式的长度,如果为NULL ,

则返回NULL 。

lower(X) 返回函数参数X 的小写形式,缺省情况下,该函数只能应用于ASCII 字符。

ltrim(X[,Y]) 如果没有可选参数Y ,该函数将移除参数X 左侧的所有空格符。如果有参数Y ,则移除X 左侧的任意在Y 中出现

的字符。最后返回移除后的字符串。

max(X,Y ,...) 返回函数参数中的最大值,如果有任何一个参数为NULL ,则返回NULL 。

min(X,Y ,...)

返回函数参数中的最小值,如果有任何一个参数为NULL ,则返回NULL 。

nullif(X,Y) 如果函数参数相同,返回NULL,否则返回第一个参数。

random()返回整型的伪随机数。

replace(X,Y,Z)将字符串类型的函数参数X中所有子字符串Y替换为字符串Z,最后返回替换后的字符串,源字符串X保持不变。round(X[,Y]) 返回数值参数X被四舍五入到Y刻度的值,如果参数Y不存在,缺省参数值为0。

rtrim(X[,Y])如果没有可选参数Y,该函数将移除参数X右侧的所有空格符。如果有参数Y,则移除X右侧的任意在Y中出现的字符。最后返回移除后的字符串。

substr(X,Y[,Z]) 返回函数参数X的子字符串,从第Y位开始(X中的第一个字符位置为1)截取Z长度的字符,如果忽略Z参数,则取第Y个字符后面的所有字符。如果Z的值为负数,则从第Y位开始,向左截取abs(Z)个字符。如果Y值为负数,则从X字符串的尾部开始计数到第abs(Y)的位置开始。

total_changes() 该函数返回自从该连接被打开时起,INSERT、UPDATE和DELETE语句总共影响的行数。我们也可以通过C/C++接口函数sqlite3_total_changes()得到相同的结果。

trim(x[,y]) 如果没有可选参数Y,该函数将移除参数X两侧的所有空格符。如果有参数Y,则移除X两侧的任意在Y中出现的字符。最后返回移除后的字符串。

upper(X) 返回函数参数X的大写形式,缺省情况下,该函数只能应用于ASCII字符。

typeof(X) 返回函数参数数据类型的字符串表示形式,如"Integer、text、real、null"等。

三、日期和时间函数:

SQLite主要支持以下四种与日期和时间相关的函数,如:

1). date(timestring, modifier, modifier, ...)

2). time(timestring, modifier, modifier, ...)

3). datetime(timestring, modifier, modifier, ...)

4). strftime(format, timestring, modifier, modifier, ...)

以上所有四个函数都接受一个时间字符串作为参数,其后再跟有0个或多个修改符。其中strftime()函数还接受一个格式字符串作为其第一个参数。strftime()和C运行时库中的同

名函数完全相同。至于其他三个函数,date函数的缺省格式为:"YYYY-MM-DD",time函

数的缺省格式为:"HH:MM:SS",datetime函数的缺省格式为:"YYYY-MM-DD

HH:MM:SS"。

1. strftime函数的格式信息:

格式说明

%d day of month: 00

%f fractional seconds: SS.SSS

%H hour: 00-24

%j day of year: 001-366

%J Julian day number

%m month: 01-12

%M minute: 00-59

%s seconds since 1970-01-01

%S seconds: 00-59

%w day of week 0-6 with Sunday==0

%W week of year: 00-53

%Y year: 0000-9999

%% %

需要额外指出的是,其余三个时间函数均可用strftime来表示,如:

date(...) strftime('%Y-%m-%d', ...)

time(...) strftime('%H:%M:%S', ...)

datetime(...) strftime('%Y-%m-%d %H:%M:%S', ...)

2. 时间字符串的格式:

见如下列表:

1). YYYY-MM-DD

2). YYYY-MM-DD HH:MM

3). YYYY-MM-DD HH:MM:SS

4). YYYY-MM-DD HH:MM:SS.SSS

5). HH:MM

6). HH:MM:SS

7). HH:MM:SS.SSS

8). now

5)到7)中只是包含了时间部分,SQLite将假设日期为2000-01-01。8)表示当前时间。

3. 修改符:

见如下列表:

1). NNN days

2). NNN hours

3). NNN minutes

4). NNN.NNNN seconds

5). NNN months

6). NNN years

7). start of month

8). start of year

9). start of day

10).weekday N

1)到6)将只是简单的加减指定数量的日期或时间值,如果NNN的值为负数,则减,否则加。7)到9)则将时间串中的指定日期部分设置到当前月、年或日的开始。10)则将日期前进到下一个星期N,其中星期日为0。注:修改符的顺序极为重要,SQLite将会按照从左到右的顺序依次执行修改符。

4. 示例:

--返回当前日期。

sqlite> SELECT date('now');

2012-01-15

--返回当前月的最后一天。

sqlite> SELECT date('now','start of month','1 month','-1 day');

2012-01-31

--返回从1970-01-01 00:00:00到当前时间所流经的秒数。

sqlite> SELECT strftime('%s','now');

1326641166

--返回当前年中10月份的第一个星期二是日期。

sqlite> SELECT date('now','start of year','+9 months','weekday 2');

sqlite3常用命令及语法

https://www.wendangku.net/doc/9e11826023.html,/linchunhua/article/details/7184439 sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常不错的嵌入式数据库,SQLite 大量的被用于手机,PDA,MP3播放器以及机顶盒设备。 Mozilla Firefox使用SQLite作为数据库。 Mac计算机中的包含了多份SQLite的拷贝,用于不同的应用。 PHP将SQLite作为内置的数据库。 Skype客户端软件在内部使用SQLite。 SymbianOS(智能手机操作平台的领航)内置SQLite。 AOL邮件客户端绑定了SQLite。 Solaris 10在启动过程中需要使用SQLite。 McAfee杀毒软件使用SQLite。 iPhones使用SQLite。 Symbian和Apple以外的很多手机生产厂商使用SQLite。 下面就sqlite中的常用命令和语法介绍 https://www.wendangku.net/doc/9e11826023.html,/download.html可下载不同操作系统的相关版本sqlite gedit 也可以使用火狐中的插件sqlite manager 新建数据库 sqlite3 databasefilename 检查databasefilename是否存在,如果不存在就创建并进入数据库(如果直接退出,数据库文件不会创建)如果已经存在直接进入数据库对数据库进行操作 sqlite中命令: 以.开头,大小写敏感(数据库对象名称是大小写不敏感的) .exit .help 查看帮助针对命令 .database 显示数据库信息;包含当前数据库的位置 .tables 或者.table 显示表名称没有表则不显示 .schema 命令可以查看创建数据对象时的SQL命令; .schema databaseobjectname查看创建该数据库对象时的SQL的命令;如果没有这个数据库对象就不显示内容,不会有错误提示 .read FILENAME 执行指定文件中的SQL语句 .headers on/off 显示表头默认off .mode list|column|insert|line|tabs|tcl|csv 改变输出格式,具体如下 sqlite> .mode list sqlite> select * from emp; 7369|SMITH|CLERK|7902|17-12-1980|800||20 7499|ALLEN|SALESMAN|7698|20-02-1981|1600|300|30 如果字段值为NULL 默认不显示也就是显示空字符串

sqlite3使用教程

Sqlite3教程 一、基本命令 1、进入命令行环境: 显示版本号,并告诉每一条SQL语句必须用分号;结尾2、命令行帮助:

3、退出命令行环境 或者 二、数据库相关命令 1、创建(或打开)一个新的数据库:文件名 若文件存在,刚打开该文件;若文件不存在,则创建一个*.db数据库文件。 导入SQL语句文件。

、列出所有数据表: 4、显示数据库结构: 用一些SQL语句描述数据库的结构。 5、显示表的结构:表名 6、导入数据:文件名表名 若导入csv文件,设置分隔符为逗号。 、导出数据:文件名 查询结果默认在终端显示,查询表格结构,语句查询表格数据。设置查询目标后,查询结果显示在设置的文件中 文件名 然后输入sql查询语句,查询的结果显示在设置的文件中,不在终端显示 运行恢复导出到终端(标准输出)。 导出数据到excle表格中 设置分隔符为逗号: 设置导出文件名,后缀为csv: 查询语句:表名

三、数据显示命令 运行表名,显示全表的内容 1.设置分隔符:分隔符 默认分隔符是“|”。 2.设置显示模式:模式

默认的是list显示模式,一般使用column模式。 3.显示标题栏: 4.设置每一列的显示宽度: 5.列出当前显示格式设置情况: 四、数据库基本操作 1.数据库定义语言DDL 在关系型数据库中,数据库中的表table、视图、索引、关系和触发器等等,构成了数据库的架构。在SQL语句中,专门有一些语句用来定义数据库架构,这些语句被称为“数据库定义语言”,即DDL。 SQLite数据库引擎支持下列三种DDL语句: ●CREATE:创建 ●ALTER TABLE:改变表的结构 ●DROP:删除

SQLITE3的操作方法及应用

数据库的操作 我们在这个项目中使用的是SQLITE3数据库软件。 通过使用SQLITE3进行创建数据库,创建表,插入记录,查询记录,更新记录,关闭数据库等操作来实现将相应的数据存入数据库中。 1.打开数据库,创建表 1.1sqlite*db;定义一个sqlite*的变量 sqlite3_open(“./link.db”,&db); 在当前目录下打开一个名为link.db的数据库,若是没有则在当前目录下创建一个名为link.db 的数据库。 1.2sql="create table weblink(id integer primary key,domain text,page text,fromdomain text,status integer);" 在已打开的数据库中创建一个名weblink的表。表的属性如下: id integer primary key:ID号(表中黙认包含的) domain text:域名 page text:子网页 fromdomain text:源域名 status integer:状态标志 1.3sqlite3_exec(db,sql,NULL,NULL,NULL); 执行一条sql语句的函数。 函数原型:int sqlite3_exec(sqlite3*,const char*sql,sqlite3_callback,void*,char**errmsg) 第1个参数是前面open函数得到的指针。说了是关键数据结构。 第2个参数const char*sql是一条sql语句,以\0结尾。 第3个参数sqlite3_callback是回调,当这条语句执行之后,sqlite3会去调用你提供的这个函数。(什么是回调函数,自己找别的资料学习) 第4个参数void*是你所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面,如果不需要传递指针给回调函数,可以填NULL。等下我们再看回调函数的写法,以及这个参数的使用。 第5个参数char**errmsg是错误信息。注意是指针的指针。sqlite3里面有很多固定的错误信息。执行sqlite3_exec之后,执行失败时可以查阅这个指针(直接printf(“%s\n”,errmsg))得到一串字符串信息,这串信息告诉你错在什么地方。sqlite3_exec函数通过修改你传入的指针的指针,把你提供的指针指向错误提示信息,这样sqlite3_exec函数外面就可以通过这个char*得到具体错误提示。 说明:通常,sqlite3_callback和它后面的void*这两个位置都可以填NULL。填NULL表

sqlite 基本操作 全

sqlite3本地数据库学习 sqlite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比mysql还快,专门用于移动设备上进行适量的数据存取,它只是个文件,不需要服务器进程。 常用术语:表(table)、字段(colum,列,属性)、记录(row,record) 关键字:select、insert、updete、delete、from、creat、where、desc、order、by、group、table、alter、view、index等。 1、安装sqlite3 sudo()apt-get()install()sqlite3 2、存储类型 integer 整型:int,shoert,long text 文本字符串:string real 浮点型:float,double blob 二进制 3、字段结束 not null:字段的值不能为空 unique:字段的值必须是唯一的 default:指定字段的默认值 primarykey:主键,用来唯一的标识某条记录,相当于记录的身份证。主键可以是一个或多个字段,应由计算机自动生成和管理。主键字段默认包含了not null和unique两个约束。 autoincrement:当主键是integer类型时,应该增加autoincrement约束,能实现主键值的自动增长。 外键:利用外键可以用来建立表与表之间的联系,一般是一张表的某个字段,引用着另一张表的主键。 4、创建数据库usr.db在当前目录下 sqlite3()usr.db 5、创建表格,表格内容以树状存储 create()table()表名(字段名1()字段类型1,字段名2()字段类型2...) 6、数据库中不能使用关键字命名表和字段,不区分大小写,每条语句后加";"结尾 7、删除表格 drop()table()表名 8、向表格里添加数据 insert()into()表名(字段1,字段2...)values(字段1的值,字段2的值...) 8、修改表中的数据 updata()表名()set()字段1=字段1的值,字段2=字段2的值... //将字段为name全部修改成'Tom' updata()stu()set()name='Tom'; //将字段为id=1001的字段name修改成'Tom' updata()stu()set()name='Tom'()where()id=1001; //将字段为id=1001同时字段name='lisi'的字段name修改成'Tom' updata()stu()set()name='Tom'()where()id=1001()and()name='lisi'; 9、删除表中的数据

QSQLite 数据库

这里我们只是演示了一下使用这个框架完成最简单的程序的过程,只起到抛砖引玉的作用。这个框架很复杂,但是功能也很强大,Qt Creator中自带了几个相关的例子(在帮助中查找Graphics View Examples即可),你可以参考一下。因为篇幅问题,我们就只讲这么多,如果以后有机会,我会推出一个相关的专题来讲述这个框架。 分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 3,006 views Tags: 2D绘图, creator, qt, yafeilinux, 教程

二十一、Qt数据库(一)简介 本文章原创于https://www.wendangku.net/doc/9e11826023.html,转载请注明出处。 从今天开始我们学习Qt数据库编程的内容。 先说明:我们以后使用现在最新的基于Qt 4.6.2的Qt Creator 1.3.1 Windows版本,该版本是2010年2月17日发布的。 数据库几乎是每个较大的软件所必须应用的,而在Qt中也使用QtSql模块实现了对数据库的完美支持。我们在Qt Creator的帮助中查找QtSql Module,其内容如下图: 可以看到这个模块是一组类的集合,使用这个模块我们需要加入头文件#include ,而在工程文件中需要加入一行代码:QT += sql 这里每个类的作用在后面都有简单的介绍,你也可以进入其中查看其详细内容。下面我们先简单的说一下QSqlDatabase类和QSqlQuery类。 QSqlDatabase类实现了数据库连接的操作,现在Qt支持的数据库类型有如下几种: 而现在我们使用的免费的Qt只提供了SQLite和ODBC数据库的驱动(我们可以在Qt Creator 安装目录下的qt\plugins\sqldrivers文件夹下查看),而其他数据库的驱动需要我们自己添加。SQLite是一个小巧的嵌入式数据库,关于它的介绍你可以自己在网上查找。 QSqlQuery类用来执行SQL语句。(关于SQL语句:在我的教程中只会出现很简单的SQL语句,你没有相关知识也可以看懂,但是如果想进行深入学习,就需要自己学习相关知识了。)

SQLITE最基本操作

SQLite数据库的基本操作 main.xml(主布局)

android:orientation="vertical">

Unity3D教程:Unity3D与Sqlite数据库直连

Unity3D教程:Unity3D与Sqlite数据库直连 Posted on 2013年01月10日 by U3d / Unity3D 基础教程/被围观 475 次环境介绍: Windows7,Unity3D,SQLite Expert Personal 3 开发语言: JavaScript 需要的dll文件: Mono.Data.Sqlite.dll和sqlite3.dll,dll文件位置,截图: Unity3D教程:Unity3D与Sqlite数据库直连一定要在这个目录下,请保持一致。 如果需要将编译好的程序发布成功的话,需要改一些地方,具体见下面的截图:

Unity3D教程:Unity3D与Sqlite数据库直连 要改动的地方已用红色标记,注意这个要改成.NET2.0,这样才能够发布的。系统默认的不是.NET2.0,这一点要注意!!! 下面来看下代码吧,先看下如何创建数据库的代码,这一篇代码是不用挂到任何对象上面去的,你只用把它当成一个工具即可。如下所示: /* Javascript class for accessing SQLite objects. To use it, you need to make sure you COPY Mono.Data.SQLiteClient.dll from wherever it lives in your Unity directory

to your project's Assets folder Originally created by dklompmaker in 2009 https://www.wendangku.net/doc/9e11826023.html,/threads ... sier-Database-Stuff Modified 2011 by Alan Chatham */ //#pragma strict /* 代码描述 *本代码是为了在Windows环境下运行unity3d和Sqlite数据库而写的;实现的基本功能是unity3d能够与数据库之间进行基本的通信,比如说:在数据库中的数据被改变了以后,unity3d中得到的数据也会在刷新了之后跟着改变;这只是一个基本的核心的技术,为的是能够应用在大型的unity3d项目中,能够存储场景中的项目的属性,在需要改变对象的属性或增加、减少等对象时能够很方便的用得上。要实现本代码。首先需要一些dll文件,一个是Mono.Data.SQLiteClient.dll,另外一个是sqlite3.dll,这些文件都能够在unity3d的安装目录中找得到。除此之外,还需要把这两个文件放在你的项目的这个路径下面:\Assets\Plugins\,没有Plugins文件夹就必须创建这个文件夹,然后将这两个dll文件放在该文件夹写。当然,如果你想能够在PC上面发布成可执行文件,还需要改动

SQLite3 API使用大全

SQLite3API使用大全E-mail:18918737 (at) qq dot com,智有不明

前序: (1) 一、版本 (1) 二、基本编译 (2) 三、 SQLITE操作入门 (2) (1)基本流程 (2) (2) SQL语句操作 (4) (3)操作二进制 (8) (4)事务处理 (10) 四、给数据库加密 (10) 五、后记 (25) 前序: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。 这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 windows 的东西,只使用标准 C 或标准C++。但是,我没有尝试过在别的系统、别的编译器下编译,因此下面的叙述如果不正确,则留待以后修改。 下面我的代码仍然用 VC 编写,因为我觉得VC是一个很不错的IDE,可以加快代码编写速度(例如配合 Vassist )。下面我所说的编译环境,是VC2003。如果读者觉得自己习惯于 unix 下用 vi 编写代码速度较快,可以不用管我的说明,只需要符合自己习惯即可,因为我用的是标准 C 或 C++ 。不会给任何人带来不便。 一、版本 从https://www.wendangku.net/doc/9e11826023.html,网站可下载到最新的 sqlite 代码和编译版本。我写此文章时,最新代码是 3.3.17 版本。 很久没有去下载 sqlite 新代码,因此也不知道 sqlite 变化这么大。以前很多文件,现在全部合并成一个 sqlite3.c 文件。如果单独用此文件,是挺好的,省去拷贝一堆文件还担心有没有遗漏。但是也带来一个问题:此文件太大,快接近7万行代码,VC开它整个机器都慢下来了。如果不需要改它代码,也就不需要打开 sqlite3.c 文件,机器不会慢。但是,下面我要写通过修改 sqlite 代码完成加密功能,那时候就比较痛苦了。如果个人水平较高,建议用些简单的编辑器来编辑,例如 UltraEdit 或 Notepad 。速度会快很多。 二、基本编译 这个不想多说了,在 VC 里新建 dos 控制台空白工程,把 sqlite3.c 和 sqlite3.h 添加到工程,再新建一个 main.cpp 文件。在里面写: extern "C" { #include "./sqlite3.h" }; int main( int , char** ) { return 0; }

SQLite Expert Personal使用教程

小蛙今天要介紹一套圖形化的SQLite管理軟體,目前像Android, iOS … 等手持式裝置內部都支援使用SQLite,不外乎是因為它方便、小、速度快,SQLite不像一般MySQL、Oracle、MSSQL這麼複雜,我們可以把SQLite想像成一個檔案(實際上存好之後也只有一個檔案),但這一個檔案又比Microsoft Access有更大的便利性(可以在很多平台使用,不會只鎖定微軟平台),想更了解SQLite可以參考、或者是。是小蛙今天要介紹的軟體,它不只可以瀏覽SQLite內儲存的資料,同時也可以進行新增、修改、刪除…等操作,就像官網首頁寫的「SQLite Expert: A powerful administration tool for your SQLite databases」。 注意:這篇文章主要是以圖形化工具操作SQLite,並不會讓你學到SQLite指令操作。 先到官網下載SQLite Expert Personal免費版,上面的是專業版,只能試用30天,那小蛙只是需要一些資料庫基本操作,選擇下面的License是Freeware的個人免費版。下載完之後安裝,預設一直下一步直到安裝完成。 安裝完成後執行SQLite Expert Personal,在桌面可以看到圖示,如果沒有的話到開始所有程式(程式集)裡面去找「SQLite Expert」,點兩下執行。

啟動之後我們必須先建立一個新的資料庫,點選左上角紅色框框新增資料庫,並且輸入相關設定。 新增完資料庫後,畫面左邊可以看到小蛙剛剛新增的資料庫「postman」,在資料庫上點選滑鼠右鍵,選擇「New Table」來新增需要的表單。

PHP进行SQLite实例教程

PHP进行SQLite实例教程 PHP进行SQLite实例教程文章录入:https://www.wendangku.net/doc/9e11826023.html, 责任编辑:https://www.wendangku.net/doc/9e11826023.html, 63【字体:小大】本教程将向你介绍SQLite API所支持的重要方法,提供一个能够用在你开发中的简单脚本模板,从而告诉你如何使用PHP与SQLite数据库进行交互操作。本文假设你已经安装好了Apache和PHP。 你的系统上并不是一定非要安装可交互的SQLite 程序;但是为了能够简化创建本教程所需要的一系列初始表格,你应该下载和安装这个程序。然后,为你的SQL查询创建一个示例表格,方法是创建一个空白的文本文件,将该文件名作为下列命令(列表A)的参数在交互命令提示符下执行二进制程序: sqlite> CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT, country TEXT); sqlite> INSERT INTO users VALUES (1, 'john', 'IN'); sqlite> INSERT INTO users VALUES (2, 'joe', 'UK'); sqlite> INSERT INTO users VALUES (3, 'diana', 'US');一旦表格创建好了,下面就是使用PHP的SQLite方法建立一个脚本模板。 <?php

// set access parameters $db = "users.db"; // open database file // make sure script has read/write permissions! $conn = sqlite_open($db) or die ("ERROR: Cannot open database"); // create and execute INSERT query $sql = "INSERT INTO users (id, username, country) VALUES ('5', 'pierre', 'FR')"; sqlite_query($conn, $sql) or die("Error in query execution: " . sqlite_error_string(sqlite_last_error($conn))); // create and execute SELECT query $sql = "SELECT username, country FROM users"; $result = sqlite_query($conn, $sql) or die("Error in query execution: " . sqlite_error_string(sqlite_last_error($conn))); // check for returned rows // print if available if (sqlite_num_rows($result) > 0) { while($row = sqlite_fetch_array($result)) { echo $row[0] . " (" . $row[1] . ") "; } }

sqlite3的数据类型详解

sqlite3中的数据类型 大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。 Sqlite使用一个更一般的动态类型系统,sqlite中,值的数据类型跟值本身相关,而不是与它的容器相关。Sqlite的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时,sqlite中的动态类型允许它能做到一些传统刚性类型数据库所不可能做到的事。 1.存储类和数据类型 每个存放在sqlite数据库中(或者由这个数据库引擎操作)的值都有下面中的一个存储类: ●NULL,值是NULL ●INTEGER,值是有符号整形,根据值的大小以1,2,3,4,6或8字节存放 ●REAL,值是浮点型值,以8字节IEEE浮点数存放 ●TEXT,值是文本字符串,使用数据库编码(UTF-8,UTF-16BE或者UTF-16LE) 存放 ●BLOB,只是一个数据块,完全按照输入存放(即没有准换) 从上可以看出存储类比数据类型更一般化。比如INTEGER存储类,包括6中不同长度的不同整形数据类型,这在磁盘上造成了差异。但是只要INTEGER值被从磁盘读出进入到内存进行处理,它们被转换成最一般的数据类型(8-字节有符号整形)。 Sqlite v3数据库中的任何列,除了整形主键列,可以用于存储任何一个存储列的值。sql语句中的中所有值,不管它们是嵌入在sql文本中或者是作为参数绑定到一个预编译的sql语句,它们的存储类型都是未定的。在下面描述的情况中,数据库引擎会在查询执行过程中在数值(numeric)存储类型(INTEGER和REAL)和TEXT 之间转换值。 1.1布尔类型 Sqlite没有单独的布尔存储类型,它使用INTEGER作为存储类型,0为false,1为true 1.2 Date和Time Datatype Sqlite没有另外为存储日期和时间设定一个存储类集,内置的sqlite日期和时间函数能够将日期和时间以TEXT,REAL或INTEGER形式存放 ●TEXT 作为IS08601字符串("YYYY-MM-DD HH:MM:SS.SSS") ●REAL 从格林威治时间11月24日,4174 B.C中午以来的天数 ●INTEGER 从 1970-01-01 00:00:00 UTC以来的秒数 程序可以任意选择这几个存储类型去存储日期和时间,并且能够使用内置的日期和时间函数在这些格式间自由转换 2.0 类型近似

易语言外部数据库sqlite3教程

易语言外部数据库sqlite3教程 =========================================================== 第一部分 sqlite基础 ----------------------------------------------------------- 1、什么是sqliet SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。 SQLite与其他SQL数据库不同,SQLite没有单独的服务器进程。它直接读取和写入普通磁盘文件。具有多个表,索引,触发器和视图的完整SQL数据库包含在单个磁盘文件中。 ----------------------------------------------------------- 2、为什么要用 SQLite? 不需要一个单独的服务器进程或操作的系统(无服务器的)。 SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。 SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。 SQLite 是自给自足的,这意味着不需要任何外部的依赖。

SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的API。 SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和Windows(Win32, WinCE, WinRT)中运行。 ----------------------------------------------------------- 3、常用易语言单机的、免费、轻量级数据库比较 易语言自带数据库易数据库可以说不能称为数据库,它只是“表”,而且还是单张表,所以直接PASS掉。 大部分人会用access,其实Access数据库本身有很多的问题:性能不行;数据不安全,用户可以直接用Access打开数据库文件进行数据修改,即使加密后都可以直接破解;Access的数据量一大,文件本身的体积就异常庞大等因素。 SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。 SQLite就是Access理想的替代品。 ----------------------------------------------------------- 4、sqlite3数据类型 SQLite存储类比数据类型更通用一些。类型比其他数据库的数据类型少,但是更实用些。

zend studio详细使用教程

zend studio详细使用教程 这一部分是让大伙儿熟悉Zend Studio集成开发环境的界面布局,以及菜单、工具栏命令的功能介绍。目的是熟悉开发环境,明白zde到底都给我们提供了什么?或者这些都是干什么用的?本文将以图文并茂的方式呈现给大家。 先看一下整个界面的截图 窗口界面: ?编辑器:主区域的一个窗口,用来编写代码的,能同时打开多个代码编辑窗口,具强大的提示、语法检查和代码高亮功能,支持php、html代码,是不可多得的神器级编辑工具。 ?浏览器(Browser):zde内置的一个标准的互联网web浏览器,其调试工具栏又让它成为使用zend studio进行调试时的重要组成部分(关于zend studio强大的调试功能,我会在后面单独撰文以讲之。) ?文件管理器:zend studio 5.5.1版的文件管理器窗口包含了3个选项卡:①文件系统:可以浏览本地硬盘上所有的文件,并可以选择性的打开使用编辑器对其编辑;②项目:在该选项卡您可以方便的进行项目的新建、打开、保存以及添加等操作,这些操作都藏在右键快捷菜单中;③SQL:这里是管理数据库连接的,zend studio 5.5.1版支持以下数据库连接:Oracle、SQLite、MSSQL、PostgreSQL、MYSQL、DB2等等。 ?检查器:该窗口包含了3个子选项卡:①文件检查器:列出了编辑器当前打开文件的引用文件、常量、自定义函数等等;②项目检查器:列出了当前项目的所有定义类、函数、常量等内容;③列出当前使用的php版本(zde支持php4和php5,可以在首选项中设置切换)。

?调试窗口:调试窗口包含了5个选项卡:①断点:显示所有设置的断点;②堆栈:调试时显示调用堆栈;③监视点:显示已定义的监视点;④变量:调试时显示全局和局部变量;⑤输出缓冲区:调试时显示脚本的缓冲区数据。 ?消息窗口:用于查看zde在编译时产生的包括Notice、Warning、Error三个级别的信息。 ?调试输出:显示当前脚本运行时输出的结果,有文本和html两种呈现方式。 主要菜单功能介绍: 文件菜单:新建文件、打开文件、关闭文件,打开项目、关闭项目,选择最近打开的文件或项目等,注意这里不能执行新建项目操作,这个需要在项目窗口才能新建项目; 编辑菜单:除了复制粘贴剪切等常规操作外,还有转换为小写、大写,代码缩进、代码折叠功能,最为称道的应该就是展示片段这个命令了。

NS3对于初学者的教程-高手忽略这个吧

1.Ns3 的安装: 开发环境配置: sudo apt-get install gcc g++ python python-dev //C++和python安装,必装 sudo apt-get install mercurial //NS3代码维护使用的源码版本控制管理系统 sudo apt-get install bzr //运行python绑定ns-3-dev需要bazaar这个组件 sudo apt-get install libgtk2.0-0 libgtk2.0-dev //基于GTK的配置系统 sudo apt-get install gdb valgrind //调试工具 sudo apt-get install doxygen graphviz imagemagick //文档生成器 sudo apt-get install texlive texlive-latex-extra //文档生成器,从源代码中生成说明文档 sudo apt-get install texinfo dia texlive-extra-utils texi2html //ns-3手册和tutorial编写查看工具 sudo apt-get install flex bison //仿真必需的词法分析器和语法分析生成器,必装 sudo apt-get install libgoocanvas-dev //部分移动场景仿真的可视化测试需要这个组件 sudo apt-get install tcpdump //读取pcap的packet traces,即包嗅探器 sudo apt-get install sqlite sqlite3 libsqlite3-dev //支持统计特性的数据库软件 sudo apt-get install libxml2 //xml的配置存储软件 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas //Gustavo's ns-3-pyviz的可视化软件 sudo apt-get install qt4-qmake sudo apt-get install qt4-dev-tools 安装完成后: 进入ns-allinone-3.16目录 sudo ./build.py 之后进入ns-allinone-3.16/ns-3.16 sudo ./waf -check 返回目录ns-allinone-3.16 进入目录netanim-3.103 sudo make clean sudo qmake NetAnim.pro sudo make 之后 sudo ls 可以看见绿色的NetAnim这个东西就成功了 sudo ./NetAnim 打开仿真界面

sqlite3api编程手册

SQLite3API编程手册 前序: (1) 一、版本 (1) 二、基本编译 (2) 三、 SQLITE操作入门 (2) (1)基本流程 (2) (2) SQL语句操作 (4) (3)操作二进制 (8) (4)事务处理 (10) 四、给数据库加密 (10) 五、后记 (25) 前序: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。 这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 windows 的东西,只使用标准 C 或标准C++。但是,我没有尝试过在别的系统、别的编译器下编译,因此下面的叙述如果不正确,则留待以后修改。 下面我的代码仍然用 VC 编写,因为我觉得VC是一个很不错的IDE,可以加快代码编写速度(例如配合 Vassist )。下面我所说的编译环境,是VC2003。如果读者觉得自己习惯于 unix 下用 vi 编写代码速度较快,可以不用管我的说明,只需要符合自己习惯即可,因为我用的是标准 C 或 C++ 。不会给任何人带来不便。 一、版本 从??网站可下载到最新的 sqlite 代码和编译版本。我写此文章时,最新代码是版本。 很久没有去下载 sqlite 新代码,因此也不知道 sqlite 变化这么大。以前很多文件,现在全部合并成一个文件。如果单独用此文件,是挺好的,省去拷贝一堆文件还担心有没有遗漏。但是也带来一个问题:此文件太大,快接近7万行代码,VC开它整个机器都慢下来了。如果不需要改它代码,也就不需要打开文件,机器不会慢。但是,下面我要写通过修改 sqlite 代码完成加密功能,那时候就比较痛苦了。如果个人水平较高,建议用些简单的编辑器来编辑,例如UltraEdit 或 Notepad 。速度会快很多。 二、基本编译 这个不想多说了,在 VC 里新建 dos 控制台空白工程,把和添加到工程,再新建一个文件。在里面写: extern "C" { #include "./" }; int main( int , char** ) { return 0; } 为什么要extern “C” ?如果问这个问题,我不想说太多,这是C++的基础。要在 C++ 里使用一段 C 的代码,必须要用extern “C” 括起来。C++跟 C虽然语法上有重叠,但是它们是两个不同的东西,内存里的布局是完全不同的,在C++编译器里不用extern “C”括起C代码,会导致编译器不知道该如何为 C 代码描述内存布局。 可能在里人家已经把整段代码都extern “C” 括起来了,但是你遇到一个 .c 文件就自觉的再括一次,也没什么不好。 基本工程就这样建立起来了。编译,可以通过。但是有一堆的 warning。可以不管它。

SQLite资料

SQLite是一个开源的、内嵌式的关系型数据库。它最初由D. Richard Hipp 发布于2000年,它的应用可减少应用程序管理数据的开销,在便携性、易用性、紧凑性、有效性和可靠性方面有突出的表现[9]。 体系架构:SQLite拥有一个精致的、模块化的体系结构,并引进了一些独特的方法进行关系型数据库的管理。它由被组织在3个子系统中的8个独立的模块组成,如图3-1所示[9]。这个模型将查询过程划分为几个不连续的任务,就像在流水线上工作一样。在体系结构栈的顶部编译查询语句,在中部执行它,在底部处理操作系统的存储和接口。 图3-1 SQLite的体系架构 接口(Interface):由SQLite 的C 语言API函数组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。一般来说,用户也是使用API函数来传递SQL语句的。 编译器(Compiler):编译过程从分词器(Tokenizer)和分析器(Parser)开始。它们协作处理文本形式的结构化查询(Structured Query Language, SQL)语句,分析其语法有效性,转化为底层能更方便处理的层次数据结构——语法树,然后把语法树传给代码生成器(code generator)进行处理。而代码生成器根据分析器生成一种SQLite专用的汇编代码,最后由虚拟机(Virtual Machine)执行。 虚拟机(Virtual Machine):架构中最核心的部分是虚拟机,或者叫做虚拟数据库引擎(Virtual DataBase Engine,VDBE)。它和Java虚拟机相似,解释执行字节代码。VDBE的字节代码(称为虚拟机语言)由128个操作码(opcodes)构成,主要

使用SQLiteDatabase操作SQLite数据库

使用SQLiteDatabase操作SQLite数据库 感谢百度雨中飞蝶的空间 Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。execSQL()方法可以执行insert、delete、update和CREATE TABLE 之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。 execSQL()方法的使用例子: SQLiteDatabase db = ....; db.execSQL("insert into person(name, age) values('小花', 24)"); db.close(); 执行上面SQL语句会往person表中添加进一条记录,在实际应用中,语句中的“传智播客”这些参数值会由用户输入界面提供,如果把用户输入的内容原样组拼到上面的insert语句,当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“&”这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必须对SQL语句中的这些特殊SQL符号都进行转义,显然,对每条SQL语句都做这样的处理工作是比较烦琐的。SQLiteDatabase类提供了一个重载后的execSQL(String sql, Object[] bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)。使用例子如下:SQLiteDatabase db = ....; db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"小花", 24}); db.close(); execSQL(String sql, Object[] bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL 语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。 SQLiteDatabase的rawQuery()用于执行select语句,使用例子如下: SQLiteDatabase db = ....; Cursor cursor = db.rawQuery(“select * from person”, null); while (cursor.moveToNext()) { int personid = cursor.getInt(0);//获取第一列的值,第一列的索引从0开始String name = cursor.getString(1);//获取第二列的值 int age = cursor.getInt(2);//获取第三列的值 } cursor.close(); db.close(); rawQuery()方法的第一个参数为select语句;第二个参数为select语句中占位符参数的值,如果select语句没有使用占位符,该参数可以设置为null。带占位符参数的select语句使用例子如下:

相关文档