欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
SQLite
来自开放百科 - 灰狐
(版本间的差异)
第1行: | 第1行: | ||
− | |||
{{SeeWikipedia}} | {{SeeWikipedia}} | ||
+ | {{SeeWikipediaChinese}} | ||
+ | |||
+ | [[Image:Sqlite-90x90.png|right]] | ||
+ | |||
==简介== | ==简介== | ||
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括: | SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括: |
2010年9月23日 (四) 05:26的版本
您可以在Wikipedia上了解到此条目的英文信息 SQLite Thanks, Wikipedia. |
您还可以在维基百科上了解到此条目的中文信息 SQLite 感谢, 维基百科. |
目录 |
简介
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>
分享您的观点