文档库 最新最全的文档下载
当前位置:文档库 › SQLite 函数大全

SQLite 函数大全

SQLite 函数大全
SQLite 函数大全

SQLite 函数大全

abs(X) 返回参数X的绝对值。

coalesce(X,Y,...) 返回第一个非空参数的副本。若所有的参数均为NULL,返回NULL。至少2个参数。

glob(X,Y) 用于实现SQLite的"X GLOB Y"语法。可使用sqlite3_create_function() 重载该函数从而改变GLOB运算符的功能。

ifnull(X,Y) 返回第一个非空参数的副本。若两个参数均为NULL,返回NULL。与上面的coalesce()类似。

last_insert_rowid() 返回当前数据库连接最后插入行的ROWID。sqlite_last_insert_rowid() API 函数同样可用于得到该值。

length(X) 返回X的长度,以字符计。如果SQLite被配置为支持UTF-8,则返回UTF-8字符数而不是字节数。

like(X,Y [,Z]) 用于实现SQL语法"X LIKE Y [ESCAPE Z]".若使用可选的ESCAPE子句,则函数被赋予三个参数,否则只有两个。可使用sqlite3_create_function() 重载该函数从而改变LIKE运算符的功能。注意同时重载like()的两参数和三参数版本,否则在使用/不使用ESCAPE子句时,LIKE运算符的实现可能使用的是不同的代码。

lower(X) 返回X字符串的所有字符小写化版本。这一转换使用C语言库的tolower()函数,对UTF-8字符不能提供好的支持。

max(X,Y,...) 返回最大值。参数可以不仅仅为数字,可以为字符串。大小顺序由常用的排序法则决定。注意,max()在有2个或更多参数时为简单函数,但当仅给出一个参数时它变为聚集函数。

min(X,Y,...) 返回最小值。与max()类似。

nullif(X,Y) 当两参数不同时返回X,否则返回NULL.

quote(X) 返回参数的适于插入其它SQL语句中的值。字符串会被添加单引号,在内部的引号前会加入逃逸符号。BLOB被编码为十六进制文本。当前的VACUUM使用这一函数实现。在使用触发器实现撤销/重做功能时这一函数也很有用。

random(*) 返回介于-2147483648和+2147483647之间的随机整数。

round(X)

round(X,Y) 将X四舍五入,保留小数点后Y位。若忽略Y参数,则默认其为0。

soundex(X) 计算字符串X的soundex编码。参数为NULL时返回字符串"?000".缺省的SQLite 是不支持该函数的,当编译时选项-DSQLITE_SOUNDEX=1 时该函数才可用。

sqlite_version(*) 返回所运行的SQLite库的版本号字符串。如"2.8.0"。

substr(X,Y,Z) 返回输入字符串X中以第Y个字符开始,Z个字符长的子串。X最左端的字符序号为1。若Y为负,则从右至左数起。若SQLite配置支持UTF-8,则“字符”代表的是UTF-8字符而非字节。

typeof(X) 返回表达式X的类型。返回值可能为"null", "integer", "real", "text", 以及"blob". SQLite的类型处理参见SQLite3的数据类型.

upper(X) 返回X字符串的所有字符大写化版本。这一转换使用C语言库的toupper()函数,对UTF-8字符不能提供好的支持。

以下是缺省可用的聚集函数列表。可以使用C语言写出其它的聚集函数然后使用sqlite3_create_function() API函数添加到数据库引擎中。

在单参数聚集函数中,参数可以加前缀DISTINCT。这时重复参数会被过滤掉,然后才穿入到函数中。例如,函数"count(distinct X)"返回字段X的不重复非空值的个数,而不是字段X的全部非空值。

avg(X) 返回一组中非空的X的平均值。非数字值作0处理。avg()的结果总是一个浮点数,即使所有的输入变量都是整数。

count(X)

count(*) 返回一组中X是非空值的次数的第一种形式。第二种形式(不带参数)返回该组中的行数。

max(X) 返回一组中的最大值。大小由常用排序法决定。

min(X) 返回一组中最小的非空值。大小由常用排序法决定。仅在所有值为空时返回NULL。sum(X)

total(X) 返回一组中所有非空值的数字和。若没有非空行,sum()返回NULL而total()返回0.0. NULL通常情况下并不是对于“没有行”的和的一个有意义的结果,但SQL标准如此要求,且大部分其它SQL数据库引擎这样定义sum(),所以SQLite 也如此定义以保证兼容。我们提供非标准的total()函数作为解决该SQL语言设计问题的一个简易方法。

total()的返回值式中为浮点数。sum()可以为整数,当所有非空输入均为整数时,和是精确的。若sum()的任意一个输入既非整数也非NULL或计算中产生整数类型的溢出时,sum()返回接近真和的浮点数。

SQLite的日期时间函数

1.date(日期时间字符串, 修正符, 修正符, ……)

2.time(日期时间字符串, 修正符, 修正符, ……)

3.datetime(日期时间字符串, 修正符, 修正符, ……)

4.julianday(日期时间字符串, 修正符, 修正符, ……)

5.strftime(日期时间格式, 日期时间字符串, 修正符, 修正符, ……)

上述五个函数需要一个日期时间字符串做参数,后面可以跟零到多个修正符参数。而 strftime() 函数还需要一个日期时间格式字符串做第一个参数。

1.date() 函数返回一个以“YYYY-MM-DD” 为格式的日期;

2.time() 函数返回一个以“YYYY-MM-DD HH:MM:SS” 为格式的日期时间;

3.julianday() 函数返回一个天数,从格林威治时间公元前4714年11月24号开始算起;

4.strftime() 函数返回一个经过格式话的日期时间,它可以用下面的符号对日期和时间进行格式化:

%d 一月中的第几天 01-31

%f 小数形式的秒,SS.SSSS

%H 小时 00-24

%j 一年中的第几天 01-366

%J Julian Day Numbers

%m 月份 01-12

%M 分钟 00-59

%s 从 1970-01-01日开始计算的秒数

%S 秒 00-59

%w 星期,0-6,0是星期天

%W 一年中的第几周 00-53

%Y 年份 0000-9999

%% % 百分号

其他四个函数都可以用 strftime() 函数来表示:

1.date(…) -> strftime(“%Y-%m-%d”,…)

2.time(…) -> strftime(“%H:%M:%S”,…)

3.datetime(…) -> strftime(“%Y-%m-%d %H:%M:%S”,…)

4.ju lianday(…) -> strftime(“%J”,…)

日期时间字符串,可以用以下几种格式:

YYYY-MM-DD

YYYY-MM-DD HH:MM

YYYY-MM-DD HH:MM:SS

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

YYYY-MM-DDTHH:MM

YYYY-MM-DDTHH:MM:SS

YYYY-MM-DDTHH:MM:SS.SSS

HH:MM

HH:MM:SS

HH:MM:SS.SSS

now

DDDD.DDDD

在第五种到第七种格式中的“T”是一个分割日期和时间的字符;第八种到第十种格式只代表2000-01-01日的时间,第十一种格式的’now’表示返回一个当前的日期和时间,使用格林威治时间(UTC);第十二种格式表示一个 Julian Day Numbers。

修正符,日期和时间可以使用下面的修正符来更改日期或时间:

NNN days

NNN hours

NNN minutes

NNN.NNNN seconds

NNN months

NNN years

start of month

start of year

start of week

start of day

weekday N

unixepoch

localtime

utc

前六个修正符就是简单的增加指定数值的时间和日期;第七到第十个修正符表示返回当前日期的开始;第十一个修正符表示返回下一个星期是N的日期和时间;第十二个修正符表示返回从1970-01-01开始算起的秒数;第十三个修正符表示返回本地时间。

下面举一些例子:

计算机当前时间

SELECT date(‘now’)

计算机当前月份的最后一天

SELECT date(‘now’,’start of month’,’+1 month’,’-1 day’)

计算UNIX 时间戳1092941466表示的日期和时间

SELECT datetime(‘1092941466’,’unixepoch’)

计算 UNIX 时间戳1092941466 表示的本地日期和时间

SELECT datetime(‘1092941466’,’unixepoch’,’localtime’)

计算机当前UNIX 时间戳

SELECT strftime(‘%s’,’now’)

两个日期之间相差多少天

SELECT jolianday(‘now’)-joli anday(‘1981-12-23’)

两个日期时间之间相差多少秒

SELECT julianday('now')*86400 - julianday('2004-01-01 02:34:56')*86400 计算今年十月份第一个星期二的日期

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

SQLite函数整理

SQLite包含了如下时间/日期函数:

datetime().......................产生日期和时间

date()...........................产生日期

time()...........................产生时间

strftime().......................对以上三个函数产生的日期和时间进行格式化

datetime()的用法是:datetime(日期/时间,修正符,修正符...)

date()和time()的语法与datetime()相同。

在时间/日期函数里可以使用如下格式的字符串作为参数:

YYYY-MM-DD

YYYY-MM-DD HH:MM

YYYY-MM-DD HH:MM:SS

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

HH:MM

HH:MM:SS

HH:MM:SS.SSS

now

其中now是产生现在的时间。

举个例子:

select date('2006-10-17','+1 day','+1 year');

结果:2007-10-18

strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。

strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)

举个例子:

select strftime('%Y.%m.%d %H:%M:%S','now','localtime');

结果:2006.10.17 21:41:09

在使用中发现SQLite不支持YYYY-MM-DD格式化,所以使用了strftime来处理。SQLite内建函数表

算术函数

abs(X) 返回给定数字表达式的绝对值。

max(X,Y[,...]) 返回表达式的最大值。

min(X,Y[,...]) 返回表达式的最小值。

random(*) 返回随机数。

round(X[,Y]) 返回数字表达式并四舍五入为指定的长度或精度。

字符处理函数

length(X) 返回给定字符串表达式的字符个数。

lower(X) 将大写字符数据转换为小写字符数据后返回字符表达式。

upper(X) 返回将小写字符数据转换为大写的字符表达式。

substr(X,Y,Z) 返回表达式的一部分。

randstr()

quote(A)

like(A,B) 确定给定的字符串是否与指定的模式匹配。glob(A,B)

条件判断函数

coalesce(X,Y[,...])

ifnull(X,Y)

nullif(X,Y)

集合函数

avg(X) 返回组中值的平均值。

count(X) 返回组中项目的数量。

max(X) 返回组中值的最大值。

min(X) 返回组中值的最小值。

sum(X) 返回表达式中所有值的和。

其他函数

typeof(X) 返回数据的类型。

last_insert_rowid() 返回最后插入的数据的ID。

sqlite_version(*) 返回SQLite的版本。

change_count() 返回受上一语句影响的行数。

last_statement_change_count()

sqlite3常用命令及语法

https://www.wendangku.net/doc/3211539486.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/3211539486.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数据库软件。 通过使用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、删除表中的数据

SQLITE最基本操作

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

android:orientation="vertical">

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/3211539486.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; }

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 类型近似

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。可以不管它。

使用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语句使用例子如下:

SQLite学习手册 中文全本

SQLite学习手册 内容收集自网络 整理: zhoushuangsheng@https://www.wendangku.net/doc/3211539486.html, 新浪微博:@_Nicky 开篇 一、简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。 下面我们将列举一下SQLite的主要特征: 1. 管理简单,甚至可以认为无需管理。 2. 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。 3. 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。 4. 易于维护。 综上所述,SQLite的主要优势在于灵巧、快速和可靠性高。SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL语句等。正是因为这些功能的牺牲才换来了简单,而简单又换来了高效性和高可靠性。 二、SQLite的主要优点: 1. 一致性的文件格式: 在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,而是应该将它看做fopen和fwrite。与我们自定义格式的数据文件相比,SQLite不仅提供了很好的移植性,如大端小端、32/64位等平台相关问题,而且还提供了数据访问的高效性,如基于某些信息建立索引,从而提高访问或排序该类数据的性能,SQLite提供的事务功能,也是在操作普通文件时无法有效保证的。 2. 在嵌入式或移动设备上的应用: 由于SQLite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等移动设备来说,SQLite的优势毋庸置疑。

sqlite3 数据库命令操作

[转]sqlite3 数据库命令操作 原网页:https://www.wendangku.net/doc/3211539486.html,/sunboy_2050/article/details/7027424 SQLite数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。 SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。 嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。 SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要占用内存,但其它开销很小,适合用于嵌入式设备,你需要做的仅仅是把它正确的编译到你的程序。 SQLite创建数据库 SQLite使用起来非常方便,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句以分号“;”结束,敲回车键之后,SQL语句就会执行。例如,创建一个包含一个数据库为“user”表“tbl”的SQLite数据库。 创建命令: 创建数据库user sqlite3 user 创建表tbl create table tbl(name char(10), age smallint, score float); 查询表 .table 插入数据 insert into tbl values('yanggang', 24, 98); insert into tbl values('sunboy', 20, 78.5); 查询数据 select * from tbl; 修改显示模式

SQLite数据库表操作

数据库表增加删除修改查询 根据SQLiteDatabase,SQLiteOpenHelper,ContentValues对数据库做增,删,改,查操作的公用代码. SQLiteDatabase: insert(databaseHelper.DATABASE_TABLE, null, content); 第一参数:数据库表名 第二个参数如果CONTENT为空时则向表中插入一个NULL, 第三个参数为插入的内容 delete(databaseHelper.DATABASE_TABLE,KEY_ROWID +"="+rowId , null)>0; 第一参数:数据库表名, 第二个参数表示条件语句, 第三个参数为条件带?的替代值 返回值大于0表示删除成功 update(databaseHelper.DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; 第一个参数:数据库表名 第二个参数更新的内容 第三个参数更新的条件 第四个参数条件带?号的替代者 数据库创建: Java代码 package us.imnet.iceskysl.db.notepad; import android.content.Context; import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * 创建数据库对象 * @author xuzhenqin * */ public class DatabaseHelper extends SQLiteOpenHelper { //数据库名称 private final static String DATABASE_NAME = "notepad"; //数据库版本号 private final static int DATABASE_VERSION = 1; public static final String DATABASE_TABLE = "diary"; //数据表创建SQL语句 private static final String DATABASE_CREATE = "create table "+DATABASE_TABLE+" (_id integer primary key autoincrement, " + "title text not null, body text not null, created text not null);"; public DatabaseHelper(Context context) { //调用父类构造方法创建数据库 super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { //执行创建数据库SQL语句

SQLITE数据库操作

使用SQLiteDatabase操 作SQLite数据库 view plaincopy to clipboardprint? 1./* 2.Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类 可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。 3.execSQL()方法的使用例子: 4.SQLiteDatabase db=....; 5.db.execSQL("insert into person(name,age)values('测试数据',4)"); 6.db.close(); 7.执行上面SQL语句会往person表中添加进一条记录,在实际应用中,语句中的“测试数据”这些 参数值会由用户输入界面提供,如果把用户输入的内容原样组拼到上面的insert语句,当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“&”这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必须对SQL语句中的这些特殊SQL符号都进行转义,显然,对每条SQL语句都做这样的处理工作是比较烦琐的。SQLiteDatabase类提供了一个重载后的execSQL(String sql,Object[]bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)。使用例子如下: 8.SQLiteDatabase db=....; 9.db.execSQL("insert into person(name,age)values(?,?)",new Object[]{"测试数 据",4}); 10.db.close(); 11.execSQL(String sql,Object[]bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL 语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。 12.*/ view plaincopy to clipboardprint? 1.public class DatabaseHelper extends SQLiteOpenHelper{ 2.//类没有实例化,是不能用作父类构造器的参数,必须声明为静态 3.private static final String name="itcast";//数据库名称 4.private static final int version=1;//数据库版本 5.public DatabaseHelper(Context context){

sqlite命令行操作指南

Compiling SQLite from Source Compiling SQLite from source on POSIX systems follows very closely the MinGW instructions given earlier for the Windows platform (actually it is more the other way around; MinGW installation apes Linux source installation!). To build SQLite on POSIX systems, you need to ensure that you have the GNU Compiler Collection (GCC) installed, including Autoconf, Automake, and Libtool. Most of the systems already discussed include all of these by default. With this software in place, you can build SQLite by doing the following: 1. Download the Linux/Unix SQLite tarball (source code) from the SQLite website. At the time of this writing, the current version is sqlite-3.3.4.tar.gz. Place it in a directory (e.g., /tmp). 2. Navigate to your build directory: cd /tmp 3. Unpack the SQLite tarball: tar -xzvf sqlite-3.3.4.tar.gz 4. Move into the unpacked directory: cd sqlite-3.3.4 5. Create the Makefile: ./configure 6. If you want to create a multithreaded shared library, run ./configure -–enable-threads –disable-tcl –prefix=/home/temp 7. Other options, such as the installation directory, are also available. For a complete list of configure options, run ./configure --help 8. Build the source: make 9. As root, install: make install You now have a functional SQLite installation on your system that includes both the SQLite shared library and a dynamically linked CLP (which uses the SQLite shared library). If you have GNU Readline installed on you system, the CLP should be compiled with Readline support. Test it out by running it from the command line: root@linux # sqlite3 This will invoke the CLP using an in-memory database. Type .help for a list of shell commands. Type .exit to close the application, or press Ctrl+D.

Sqlite3数据库

数据库--sqlite的操作2012-06-11 20:54:55 分类:SQLite/嵌入式数据库 一、数据库基本概念 A.数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合。 B.数据库(Database) 数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。 注意:数据库管理系统(DataBase Mangement System) --DBMMS C.数据库管理系统(DBMS) DBMS是数据库系统中对数据进行统一管理和控制的软件系统 (1)数据库定义功能 (Data Definition) (2)数据库操纵功能 (Data Manpulation)

(3)数据库运行控制功能 (Data Control) (4)数据通信功能(Data Communication) 即为应用程序提供的访问接口 (5)支持存取海量数据(Mass Data) 二、文件管理和数据库管理 A.文件管理阶段 优点: (i)数据可长期保存 (ii)能存储大量数据 缺点: (i)数据冗余度(redundancy)、数据一致性(consistency)、完整性(integrity)难以维持 (ii)数据与程序缺乏高度独立性 B.数据库系统阶段

(i)数据组织结构化 (ii)数据冗余度比较小,易扩充 (iii)具有较高的数据与程序之间的独立性 (iv)统一的数据控制 三、常用的数据库介绍 A.大型数据库 Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。 IBM的DB2是第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。 B.中型数据库 SQLServer是微软开发的数据库产品,主要支持windows平台。 C.小型数据库

SQLite数据库使用详解-程序

1.1 轻量级 SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,使用SQLite 一般只需要带上它的一个动态库。以版本3.6.11为例,Windows下487KB、Linux 下347KB。 1.2 绿色软件 它的核心引擎本身不依赖第三方的软件 1.3 单一文件 就是数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。 CSV也是单一文件格式。它本身就是用来表示二维的数据信息的。一个CSV 文件可以理解为数据库的一张表。CSV的缺点主要在于:不便于存储非文本的数据信息(比如BLOB类型的信息);如果需要同时存储多张表的信息,就需要对应有多个CSV文件(文件一多,就嫌麻烦)。 1.4 跨平台/可移植性 除了主流操作系统,SQLite还支持了很多其他的操作系统。如对很多嵌入式系统(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。 Access数据库最主要的缺点就是不能跨平台。另外还有几个小缺点:文件大小有限制(2GB)、不支持内存数据库。 1.5 内存数据库(in-memory database) 如今内存越来越便宜,很多普通PC都开始以GB为单位来衡量内存(服务器就更甭提了)。这时候,SQLite的内存数据库特性就越发显得好用。SQLite的API不区分当前操作的数据库是在内存还是在文件(对于存储介质是透明的)。所以如果你觉得磁盘I/O有可能成为瓶颈的话,可以考虑切换为内存方式。切换的时候,操作SQLite的代码基本不用大改,只要在开始时把文件Load到内存,结束时把内存的数据库Dump回文件就OK了。 1.6 编程语言接口 由于SQLite本身是C写的,它自带的API也是C接口的。

使用SQLITEDATABASE操作SQLITE 数据库

1./* 2.Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类 可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;rawQuery()方法用于执行select语句。 3.execSQL()方法的使用例子: 4.SQLiteDatabase db=....; 5.db.execSQL("insert into person(name,age)values('测试数据',4)"); 6.db.close(); 7.执行上面SQL语句会往person表中添加进一条记录,在实际应用中,语句中的“测试数据”这些 参数值会由用户输入界面提供,如果把用户输入的内容原样组拼到上面的insert语句,当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“&”这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必须对SQL语句中的这些特殊SQL符号都进行转义,显然,对每条SQL语句都做这样的处理工作是比较烦琐的。SQLiteDatabase类提供了一个重载后的execSQL(String sql,Object[]bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)。使用例子如下: 8.SQLiteDatabase db=....; 9.db.execSQL("insert into person(name,age)values(?,?)",new Object[]{"测试数 据",4}); 10.db.close(); 11.execSQL(String sql,Object[]bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL 语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。 12.*/ 1.public class DatabaseHelper extends SQLiteOpenHelper{ 2.//类没有实例化,是不能用作父类构造器的参数,必须声明为静态 3.private static final String name="itcast";//数据库名称 4.private static final int version=1;//数据库版本 5.public DatabaseHelper(Context context){

相关文档