Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3847530
  • 博文数量: 146
  • 博客积分: 3918
  • 博客等级: 少校
  • 技术积分: 8584
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-17 13:52
个人简介

个人微薄: weibo.com/manuscola

文章分类

全部博文(146)

文章存档

2016年(3)

2015年(2)

2014年(5)

2013年(42)

2012年(31)

2011年(58)

2010年(5)

分类: SQLite/嵌入式数据库

2012-04-04 11:59:42

    最近三四天学习的主要内容是数据库相关的知识,本科时初步学习过数据库的知识,通过了三级数据库考试,但是蜻蜓点水,没啥收获。本文主要是讲一下在linux下进行sqlite接口调用的一些体会和心得。


    首先是安装,我用的是Ubuntu系统,安装就比较简单了,直接apt-get就搞定了。

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<sqlite3.h>


  4. int main()
  5. {
  6.     sqlite3* db;
  7.         int ret;
  8.         char *sql;
  9.         char *zerr;

  10.         ret = sqlite3_open("test.db",&db);
  11.         if(ret)
  12.         {
  13.          fprintf(stderr,"cannot open db : %s\n",sqlite3_errmsg(db));
  14.                 sqlite3_close(db);
  15.                 return 1;
  16.         }

  17.         sql = "create table episodes(id int ,name text)";
  18.         ret = sqlite3_exec(db,sql,NULL,NULL,&zerr);
  19.         if(ret != SQLITE_OK)
  20.         {
  21.          if(zerr!=NULL)
  22.                 {
  23.                  fprintf(stderr,"SQL error:%s\n",zerr);
  24.                         sqlite3_free(zerr);
  25.                 }
  26.         }
  27.         sql = "insert into episodes values(10,'the dinner party')";
  28.         ret = sqlite3_exec(db,sql,NULL,NULL,&zerr);

  29.         sqlite3_close(db);
  30.         return 0;
  31. }
    首先遇到的问题是,没有头文件,我去官网下载了sqlite-amalgamation-3071100.zip,解压下来,把头文件sqlite3.h放入到了/usr/include/ 路径下。 

    然后遇到的问题是 没有动态库,我加上 -lsqlite3选项还是无法找到动态库。看了网上说了中方法,说是可以通过apt-get install libsqlite3-dev的方法解决,我尝试了下,果然,再次编译就成功了。

   上面是我遇到的问题,我也不知道我解决问题的办法是不是正确的,更优雅的做法应该是什么样的,如果有路过高手,请不吝赐教。

点击(此处)折叠或打开

  1. root@libin:~/program/DB/sqlite# gcc -o test test.c -lsqlite3
  2. root@libin:~/program/DB/sqlite# ./test
  3. root@libin:~/program/DB/sqlite# ll
  4. 总用量 24
  5. drwxr-xr-x 2 root root 4096 2012-04-04 12:08 ./
  6. drwxr-xr-x 3 root root 4096 2012-04-04 10:04 ../
  7. -rwxr-xr-x 1 root root 7343 2012-04-04 12:08 test*
  8. -rw-r--r-- 1 root root 666 2012-04-04 12:08 test.c
  9. -rw-r--r-- 1 root root 2048 2012-04-04 12:08 test.db
我们可以看到生成了数据库test.db.


点击(此处)折叠或打开

  1. root@libin:~/program/DB/sqlite# sqlite3 test.db
  2. SQLite version 3.6.22
  3. Enter ".help" for instructions
  4. Enter SQL statements terminated with a ";"
  5. sqlite> select * from episodes ;
  6. 10|the dinner party
  7. sqlite>


参考文献:
1 SQLite 权威指南
2 cannot find lxxx 问题总结
阅读(7305) | 评论(8) | 转发(1) |
给主人留下些什么吧!~~

Bean_lee2012-06-12 21:44:03

liurhyme: 这个………….....
呵呵当时水平比较低,现在看出问题所在了

liurhyme2012-06-12 18:13:43

这个…………

Heartwork2012-04-05 14:03:33

GFree_Wind: 我以前也用过sqlite。
sqlite的数据库文件也不会随着数据的减小而减小——至少3.2那个版本是这样。
删除数据操作,并不减小数据库文件。

另外,sqlite总的来说.....
原来如此,谢谢wind兄了!

GFree_Wind2012-04-05 13:42:43

Bean_lee: 兄弟说的不错,是轻量级数据库,项目代码中有sqlite的代码,所以需要学习一下。另外需要入手学习DB,考虑到sqlite的源码比较少,就先拿sqlite这个软柿子捏了。
.....
估计大多数人都是荒废了本科时间。

客观说环境因素导致了中国本科普遍的荒废,我也同意后悔不已。

Bean_lee2012-04-05 12:45:30

GFree_Wind: 兄弟,我也用过sqlite。还看了一小部分源代码。。。。
不知道你要拿sqlite来做什么?它可是轻量级的数据库,当数据太多的时候,它就扛不住了啊。.....
兄弟说的不错,是轻量级数据库,项目代码中有sqlite的代码,所以需要学习一下。另外需要入手学习DB,考虑到sqlite的源码比较少,就先拿sqlite这个软柿子捏了。

我sqlite权威指南说 源码只有7万行,结果我下了最新的代码,已经14万行了。唉悲剧啊.现在在补习理论知识。  本科时候浪费了太多的光阴,没打好基础,悔恨啊。