嵌入式数据库_第1页
嵌入式数据库_第2页
嵌入式数据库_第3页
嵌入式数据库_第4页
嵌入式数据库_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于嵌入式linux的数据库基于嵌入式linux的数据库主要有SQLite,Firebird,BerkeleyDB,eXtremeDBSQLite关系型数据库,体积小,支持ACID事务BerkeleyDB中并没有数据库服务器的概念,它的程序库直接链接到应用程序中eXtremeDB是内存数据库,运行效率高桌面嵌入式数据库选型基本要求:1、轻巧:运行高效、依赖较少2、跨平台性:能够在Android、iOS、linux等诸多环境下运行3、开源4、具备编程接口开发能力SQLite、MySQL、Berkeley

DBexportPATH=$PATH:/usr/local/arm/arm-2009q3/bin./configure-host=arm-linuxmakeexportPATH=$PATH:/usr/local/arm/arm-2009q3/bin./configure-host=arm-linuxmakearm-linux-gccsqlite.c-oarmsqltest-L/home/unsp/lcd/sqlite-autoconf-3120200/.libs-lsqlite3#include"sqlite3.h"cp/mnt/hgfs/share/sqlite.c././configure配置工程,生成makefile文件make执行makefile文件中的编译脚本,完成源码工程的编译SQLite基础SQLite的源代码是C,其源代码完全开放。SQLite第一个Alpha版本诞生于2000年5月。他是一个轻量级的嵌入式数据库。

SQLite有以下特性:

零配置一无需安装和管理配置;

储存在单一磁盘文件中的一个完整的数据库;

数据库文件可以在不同字节顺序的机器间自由共享;

支持数据库大小至2TB;

足够小,全部源码大致3万行c代码,250KB;

比目前流行的大多数数据库对数据的操作要快;/download.html创建SQLite数据库手工创建使用sqlite3工具,通过手工输入SQL命令行完成数据库创建.用户在Linux的命令行界面中输入sqlite3可启动sqlite3工具代码创建在代码中常动态创建数据库在程序运行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序则会自动建立数据库,然后再打开数据库SQLite常用命令介绍在终端下运行sqlite3<*.db>,出现如下提示符SQLiteversion3.7.2Enter“.help”forinstructionsEnterSQLstatementsterminatedwitha“;”sqlite><*.db>是要打开的数据库文件。若该文件不存在,则自动创建。exportPATH=$PATH:/usr/local/arm/arm-2009q3/bin./configure--host=arm-linuxSQLite常用命令介绍显示所有命令sqlite>.help退出sqlite3 sqlite>.quit显示当前打开的数据库文件 sqlite>.database显示数据库中所有表名 sqlite>.tablesSQLite常用命令介绍查看表的结构 sqlite>.schema<table_name>/*******************************************/以下为SQL命令,每个命令以;结束创建新表 sqlite>createtable<table_name>(f1type1,f2type2,…);删除表 sqlite>droptable<table_name>

SQLite常用命令介绍查询表中所有记录sqlite>select*from<table_name>;按指定条件查询表中记录 sqlite>select*from<table_name>where<expression>;向表中添加新记录 sqlite>insertinto<table_name>values(value1,value2,…);按指定条件删除表中记录 sqlite>deletefrom<table_name>where<expression>SQLite常用命令介绍更新表中记录sqlite>update<table_name>set<f1=value1>,<f2=value2>…where<expression>;在表中添加字段 sqlite>altertable<table>addcolumn<field><type>;SQLite编程接口intsqlite3_open(char*path,sqlite3**db);

功能:打开sqlite数据库path:

数据库文件路径db:

指向sqlite句柄的指针

返回值:成功返回0,失败返回错误码(非零值)

SQLite编程接口intsqlite3_close(sqlite3*db);

功能:关闭sqlite数据库

返回值:成功返回0,失败返回错误码constchar*sqlite3_errmg(sqlite3*db);

返回值:返回错误信息

SQLite编程接口#include<stdio.h>#include<stdlib.h>#include<sqlite3.h>intmain(intargc,char*argv[]){ sqlite3*db;if(sqlite3_open(“my.db”,&db)!=SQLITE_OK){printf(“error:%s\n”,sqlite3_errmsg(db));exit(-1);}SQLite编程接口 ……

数据库操作……sqlite3_close(db);return0;}#gcc-otesttest.c-lsqlite3SQLite编程接口typedefint(*sqlite3_callback)(void*,int,char**,char**);intsqlite3_exec(sqlite3*db,constchar*sql,sqlite3_callbackcallback,void*,char**errmsg);

功能:执行SQL操作db:数据库句柄sql:SQL语句callback:回调函数errmsg:错误信息指针的地址

返回值:成功返回0,失败返回错误码

SQLite编程接口sqlite3*db;char*errmsg;

……if(sqlite3_exec(db,“deletefromtable1whereid=1”,NULL,NULL,&errmsg)!=SQLITE_OK){printf(“error:%s\n”,errmsg);exit(-1);}……SQLite编程接口typedefint(*sqlite3_callback)(void*para,intf_num,char**f_value,char**f_name);

功能:每找到一条记录自动执行一次回调函数para:传递给回调函数的参数f_num:记录中包含的字段数目f_value:包含每个字段值的指针数组f_name:包含每个字段名称的指针数组

返回值:成功返回0,失败返回-1

SQLite编程接口例如:定义一个回调函数,打印记录中所有字段的名称和值

intcallback(void*para,intf_num,char**f_value,char**f_name){inti;printf(“*****************************\n”);for(i=0;i<f_num;i++){printf(“%s:%s\n”,f_name[i],f_value[i]);}return0;}SQLite编程接口sqlite3*db;char*errmsg;

……if(sqlite3_exec(db,“select*fromtable”,callback,NULL,&errmsg)!=SQLITE_OK){printf(“error:%s\n”,errmsg);exit(-1);}……SQLite编程接口不使用回调函数执行SQL语句intsqlite3_get_table(sqlite3*db,constchar*sql,char**resultp,int*nrow,int*ncolumn,char**errmsg);

功能:执行SQL操作db:数据库句柄sql:SQL语句resultp:用来指向sql执行结果的指针nrow:满足条件的记录的数目ncolumn:每条记录包含的字段数目errmsg:错误信息指针的地址

返回值:成功返回0,失败返回错误码

SQLite编程接口sqlite3*db;char*errmsg,**resultp;intnrow,ncolumn,i,j,index;

……if(sqlite3_exec(db,“select*fromtable”,&resultp,&nrow,&ncolumn,&errmsg)!=SQLITE_OK){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论