SQLite

来自开放百科 - 灰狐
2010年9月9日 (四) 03:35Allen (讨论 | 贡献)的版本

跳转到: 导航, 搜索
Sqlite-90x90.png

目录

简介

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

Comment-32x32.png

<discussion>characters_max=300</discussion>

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱