欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
SQLite
来自开放百科 - 灰狐
(版本间的差异)
小 (→Projects) |
|||
(未显示2个用户的16个中间版本) | |||
第1行: | 第1行: | ||
− | [[Image:Sqlite. | + | {{top news}} |
+ | {{SeeWikipedia}} | ||
+ | |||
+ | [[Image:Sqlite-90x90.png|right]] | ||
+ | |||
==简介== | ==简介== | ||
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括: | SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括: | ||
第5行: | 第9行: | ||
* 事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。 | * 事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。 | ||
* 零配置——不需要安装和管理。 | * 零配置——不需要安装和管理。 | ||
− | * 实现了绝大多数SQL92标准。 | + | * 实现了绝大多数SQL92标准。 |
* 整个数据库存储在一个单一的文件中。 | * 整个数据库存储在一个单一的文件中。 | ||
* 数据库文件可以在不同字节序的机器之间自由地共享。 | * 数据库文件可以在不同字节序的机器之间自由地共享。 | ||
− | * 支持最大可达2T的数据库。 | + | * 支持最大可达2T的数据库。 |
* 字符串和BLOB类型的大小只受限于可用内存。 | * 字符串和BLOB类型的大小只受限于可用内存。 | ||
* 小的代码: 完整配置的少于250KB,忽略一些可选特性的少于150KB。 | * 小的代码: 完整配置的少于250KB,忽略一些可选特性的少于150KB。 | ||
第32行: | 第36行: | ||
sqlite3 test.db "insert into t1 (data,num) values ('Huihoo',9);" | sqlite3 test.db "insert into t1 (data,num) values ('Huihoo',9);" | ||
查询数据 | 查询数据 | ||
− | sqlite3 test.db | + | sqlite3 test.db "select * from t1 limit 2"; |
sqlite3 test.db "select * from t1 order by t1key limit 1 offset 2"; | sqlite3 test.db "select * from t1 order by t1key limit 1 offset 2"; | ||
查询 test.db 包含哪些表 | 查询 test.db 包含哪些表 | ||
sqlite3 test.db ".table" | sqlite3 test.db ".table" | ||
− | + | 更多表信息 | |
sqlite3 test.db "select * from sqlite_master" | sqlite3 test.db "select * from sqlite_master" | ||
显示sql信息 | 显示sql信息 | ||
第42行: | 第46行: | ||
更多指南请访问SQLite Tutorial: http://freshmeat.net/articles/view/1428/ | 更多指南请访问SQLite Tutorial: http://freshmeat.net/articles/view/1428/ | ||
+ | ==C and C++ API== | ||
+ | simplesqlite3.c | ||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | #include <sqlite3.h> | ||
+ | |||
+ | static int callback(void *NotUsed, int argc, char **argv, char **azColName){ | ||
+ | NotUsed=0; | ||
+ | int i; | ||
+ | for(i=0; i<argc; i++){ | ||
+ | printf("%s = %s\n", azColName[i], argv[i] ? argv[i]: "NULL"); | ||
+ | } | ||
+ | printf("\n"); | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | int main(int argc, char **argv){ | ||
+ | sqlite3 *db; | ||
+ | char *zErrMsg = 0; | ||
+ | int rc; | ||
+ | |||
+ | if( argc!=3 ){ | ||
+ | fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); | ||
+ | exit(1); | ||
+ | } | ||
+ | rc = sqlite3_open(argv[1], &db); | ||
+ | if( rc ){ | ||
+ | fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); | ||
+ | sqlite3_close(db); | ||
+ | exit(1); | ||
+ | } | ||
+ | rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); | ||
+ | if( rc!=SQLITE_OK ){ | ||
+ | fprintf(stderr, "SQL error: %s\n", zErrMsg); | ||
+ | } | ||
+ | sqlite3_close(db); | ||
+ | return 0; | ||
+ | } | ||
+ | 编译 | ||
+ | gcc -o simplesqlite3 simplesqlite3.c -Wall -W -O2 -Wl,-R/usr/local/lib -lsqlite3 | ||
+ | 加入lib地址 | ||
+ | $ locate libsqlite3.so | ||
+ | /usr/local/lib/libsqlite3.so.0.8.6 | ||
+ | /usr/local/lib/libsqlite3.so.0 | ||
+ | /usr/local/lib/libsqlite3.so <--- note directory is /usr/local/lib | ||
+ | $ echo "/usr/local/lib" >> /etc/ld.so.conf | ||
+ | $ ldconfig | ||
+ | 运行 | ||
+ | $ ./simplesqlite3 test.db "create table notes (t text)" | ||
+ | $ ./simplesqlite3 test.db "insert into notes (t) values (' | ||
+ | > This is some random | ||
+ | > stuff to add' | ||
+ | >);" | ||
+ | |||
+ | $ ./simplesqlite3 test.db "select * from notes" | ||
+ | |||
+ | ==Projects== | ||
+ | *[[Sqliteman]] | ||
+ | *[[APSW]] | ||
==Links== | ==Links== | ||
第48行: | 第111行: | ||
* http://docs.huihoo.com/sqlite/ | * http://docs.huihoo.com/sqlite/ | ||
− | [[ | + | {{Comment}} |
+ | |||
+ | [[Category:Database]] |
2013年2月10日 (日) 07:46的最后版本
您可以在Wikipedia上了解到此条目的英文信息 SQLite Thanks, Wikipedia. |
目录 |
[编辑] 简介
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括:
- 事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
- 零配置——不需要安装和管理。
- 实现了绝大多数SQL92标准。
- 整个数据库存储在一个单一的文件中。
- 数据库文件可以在不同字节序的机器之间自由地共享。
- 支持最大可达2T的数据库。
- 字符串和BLOB类型的大小只受限于可用内存。
- 小的代码: 完整配置的少于250KB,忽略一些可选特性的少于150KB。
- 在大多数常见操作上比流行的客户/服务器数据库引擎更快。
- 简单,易于使用的API。
- 内建TCL绑定。 另外提供可用于许多其他语言的绑定。
- 具有良好注释的源代码,95%经过测试。
- 独立:没有外部依赖。
- 源代码位于公共域。 可用于任何用途。
SQLite发行版包含一个独立的命令行访问程序(sqlite),可用于管理SQLite数据库,并适合作为一个如何使用SQLite库的例子。
[编辑] Tutorial
创建数据库: test.db
sqlite3 test.db SQLite version 3.5.9 Enter ".help" for instructions sqlite> .quit
创建表: t1
sqlite3 test.db "create table t1 (t1key integer primary key,data text,num double,timeEnter date);"
插入记录
sqlite3 test.db "insert into t1 (data,num) values ('Google',3);" sqlite3 test.db "insert into t1 (data,num) values ('Yahoo',6);" sqlite3 test.db "insert into t1 (data,num) values ('Huihoo',9);"
查询数据
sqlite3 test.db "select * from t1 limit 2"; sqlite3 test.db "select * from t1 order by t1key limit 1 offset 2";
查询 test.db 包含哪些表
sqlite3 test.db ".table"
更多表信息
sqlite3 test.db "select * from sqlite_master"
显示sql信息
sqlite3 test.db ".dump"
更多指南请访问SQLite Tutorial: http://freshmeat.net/articles/view/1428/
[编辑] C and C++ API
simplesqlite3.c
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){ NotUsed=0; int i; for(i=0; i<argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i]: "NULL"); } printf("\n"); return 0; }
int main(int argc, char **argv){ sqlite3 *db; char *zErrMsg = 0; int rc;
if( argc!=3 ){ fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); exit(1); } rc = sqlite3_open(argv[1], &db); if( rc ){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); } sqlite3_close(db); return 0; }
编译
gcc -o simplesqlite3 simplesqlite3.c -Wall -W -O2 -Wl,-R/usr/local/lib -lsqlite3
加入lib地址
$ locate libsqlite3.so /usr/local/lib/libsqlite3.so.0.8.6 /usr/local/lib/libsqlite3.so.0 /usr/local/lib/libsqlite3.so <--- note directory is /usr/local/lib $ echo "/usr/local/lib" >> /etc/ld.so.conf $ ldconfig
运行
$ ./simplesqlite3 test.db "create table notes (t text)" $ ./simplesqlite3 test.db "insert into notes (t) values (' > This is some random > stuff to add' >);"
$ ./simplesqlite3 test.db "select * from notes"
[编辑] Projects
[编辑] Links
<discussion>characters_max=300</discussion>
分享您的观点