Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4174659
  • 博文数量: 291
  • 博客积分: 8003
  • 博客等级: 大校
  • 技术积分: 4275
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-30 18:28
文章分类

全部博文(291)

文章存档

2017年(1)

2013年(47)

2012年(115)

2011年(121)

2010年(7)

分类: SQLite/嵌入式数据库

2011-06-17 16:53:58

0.下载
下载sqlite源代码:
1.创建测试库数据
创建test.db如下:可用sqlite3或者sqlite brower创建
  1. BEGIN TRANSACTION;
  2. CREATE TABLE sdns (id INTEGER PRIMARY KEY, name TEXT, ip TEXT);
  3. INSERT INTO sdns VALUES(1,'UNI-BJ-SDNS','1.2.3.4');
  4. INSERT INTO sdns VALUES(2,'CTC-GD-SDNS','5.6.7.8');
  5. COMMIT;
2.创建测试程序
  1. //gcc sqlite3.c test.c -o t -lpthread -ldl
  2. //./t test.db "select * from sdns"
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include "sqlite3.h"
  6.   
  7. //通过回调函数输出结果
  8. static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  9.     int i;
  10.     for(i=0; i<argc; i++){
  11.          //列名 列值
  12.       printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  13.     }
  14.     printf("\n");
  15.     return 0;
  16. }
  17.   
  18.   int main(int argc, char **argv){
  19.     sqlite3 *db;
  20.     char *zErrMsg = 0;
  21.     int rc;
  22.   
  23.     if( argc!=3 ){
  24.       fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
  25.       exit(1);
  26.     }
  27.     //打开数据库
  28.     rc = sqlite3_open(argv[1], &db);
  29.     if( rc ){
  30.         //执行出错,关闭数据库
  31.       fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
  32.       sqlite3_close(db);
  33.       exit(1);
  34.     }
  35.     rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  36.     if( rc!=SQLITE_OK ){
  37.         //打印错误信息
  38.       fprintf(stderr, "SQL error: %s\n", zErrMsg);
  39.       sqlite3_free(zErrMsg);
  40.     }
  41.     sqlite3_close(db);
  42.     return 0;
  43.   }
3.编译,把sqlite3.c,sqlite3.h,sqlite3ext.h,test.c上传到服务器上编译
  1. gcc sqlite3.c test.c -o t -lpthread -ldl
4.执行
  1. [root@localhost sqlite]# ./t test.db "select * from sdns"
  2. id = 1
  3. name = UNI-BJ-SDNS
  4. ip = 1.2.3.4
  5. id = 2
  6. name = CTC-GD-SDNS
  7. ip = 5.6.7.8
5.这种编译把sqlite打包到程序里,因此程序比较大,但是这样部署时不用去加载.so库文件
6.用gnuwin32在window下也可以编译,效果如下
end
阅读(1658) | 评论(0) | 转发(0) |
0

上一篇:常见Sqlite管理工具

下一篇:论流行游戏

给主人留下些什么吧!~~