设为首页 收藏本站
查看: 1965|回复: 0

[经验分享] linux内核数据库sqlite3的移植和简单操作

[复制链接]

尚未签到

发表于 2015-3-7 08:16:49 | 显示全部楼层 |阅读模式
基于嵌入式linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDB
这几种数据库的特点:
·Firebird是关系型数据库,功能强大,支持存储过程、SQL兼容等
·SQLite关系型数据库,体积小,支持ACID事务
·Berkeley DB中并没有数据库服务器的概念,它的程序库直接链接到应用程序中
·eXtremeDB是内存数据库,运行效率高
SQLite的源代码是C,其源代码完全开放,是一个轻量级的嵌入式数据库。
SQLite有以下特性:  零配置一无需安装和管理配置;
  储存在单一磁盘文件中的一个完整的数据库;
  数据库文件可以在不同字节顺序的机器间自由共享;
  支持数据库大小至2TB;
  足够小,全部源码大致3万行c代码,250KB;
  比目前流行的大多数数据库对数据的操作要快;
  这个数据库操作比较简单,首先要安装数据库:
  
  这个很简单,在http://www.sqlite.org/download.html这个sqlite主页的下载目录中找到对应的linux版本。下载完成后解压,执行里面的
  configure。如图:
DSC0000.png
  执行完之后要执行 sudo make && make install
  等待一段时间就可以安装完成。
  完成以后看一下我们sqlite3的执行文件的路径在哪里如图:
DSC0001.png
  
  在/usr/local/bin目录里。
  为了以后的方便,可以将该目录加入到环境变量里,先打开 sudo vim /environment 将路径加入到这里,如何将sqlite3 移植到开发板上呢?
  1、去掉/root/sqlite3.3.6目录下的sqlite3的调示信息:(俗称瘦身)
  #arm-linux-strip sqlite3
  2、将sqlite3下载到开发板的/usr/bin目录:
  在PC机的目录/usr/lib 中找到libsqlite3.so.0、libsqlite3.so.0.8.6这两个库文件,去掉调示信息后把它们复制到开发板的/usr/lib目录下:
  arm-linux-strip libsqlite3.so.0       (/home/linux/sqlite/lib)
  arm-linux-strip libsqlite3.so.0.8.6    (/home/linux/sqlite/lib)
  cp  –arf  libsqlite3.so.0  libsqlite3.so.0.8.6  /usr/lib 加上arf的目的是将源库拷贝,千万别只拷贝个链接,那么就悲剧了。。。
  
  
  经过以上步骤,开发板上就已经有了sqlite数据库。
  sqlite的一些基本操作可以在网上找一下,SQL语句都是通用的,所以比较重要的是sqlite3特供的一些操作数据库的接口:
  
  int   sqlite3_open(char  *path,   sqlite3 **db);
  功能:打开sqlite数据库
  path: 数据库文件路径
  db: 指向sqlite句柄的指针
  返回值:成功返回0,失败返回错误码(非零值)
  
  int   sqlite3_close(sqlite3 *db);
  功能:关闭sqlite数据库         
  返回值:成功返回0,失败返回错误码
  const  char  *sqlite3_errmg(sqlite3 *db);
  返回值:返回错误信息
  
  gcc  -o  test  test.c  -lsqlite3
  

}
回调函数的定义:
typedef  int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);
}  功能:每找到一条记录自动执行一次回调函数
  para:传递给回调函数的参数
  f_num:记录中包含的字段数目
  f_value:包含每个字段值的指针数组
  f_name:包含每个字段名称的指针数组
  返回值:成功返回0,失败返回-1
  int   sqlite3_exec(sqlite3 *db, const  char  *sql,  sqlite3_callback callback, void *,  char **errmsg);
  功能:执行SQL操作
  db:数据库句柄
  sql:SQL语句
  callback:回调函数
  errmsg:错误信息指针的地址
  返回值:成功返回0,失败返回错误码
  
  例如:定义一个回调函数,打印记录中所有字段的名称和值
           

int  callback(void *para, intf_num,  char **f_value, char **f_name)
{
int  i;
printf(“*****************************\n”);
for (i=0; i

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-44090-1-1.html 上篇帖子: System.Data.SQLite 1.0.95.0 发布 下篇帖子: apache+sqlite+php for Arm Linux(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表