SQLite

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(Projects)
 
(未显示2个用户的15个中间版本)
第1行: 第1行:
[[Image:Sqlite.jpeg|right]]
+
{{top news}}
 +
{{SeeWikipedia}}
 +
 
 +
[[Image:Sqlite-90x90.png|right]]
 +
 
 
==简介==
 
==简介==
 
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括:
 
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括:
第5行: 第9行:
 
* 事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
 
* 事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
 
* 零配置——不需要安装和管理。
 
* 零配置——不需要安装和管理。
* 实现了绝大多数SQL92标准。 (不支持的特性)
+
* 实现了绝大多数SQL92标准。
 
* 整个数据库存储在一个单一的文件中。
 
* 整个数据库存储在一个单一的文件中。
 
* 数据库文件可以在不同字节序的机器之间自由地共享。
 
* 数据库文件可以在不同字节序的机器之间自由地共享。
* 支持最大可达2T的数据库。 (241 字节)
+
* 支持最大可达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 "select * from t1 limit 2";
+
  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 包含哪些表
第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/
  
[[category:Open source database management systems]]
+
{{Comment}}
 +
 
 +
[[Category:Database]]

2013年2月10日 (日) 07:46的最后版本

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 SQLite Thanks, Wikipedia.
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>

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

变换
操作
导航
工具箱