注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

蒙奇D小豌豆的博客

蒙奇D小豌豆的学习记录

 
 
 

日志

 
 

嵌入式数据库Sqlite3 Linux(CentOS)环境编译、使用介绍  

2010-04-05 12:34:50|  分类: others |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

嵌入式数据库Sqlite3 Linux(CentOS)环境编译、使用介绍

环境:X86 PC、CentOS

编译安装步骤:
1. 从www.sqlite.org网站下载最新源代码,使用sqlite-3.6.23.1。tar.gz版本
2. 在CentOS环境下解压文件,在这里假设/usr/local/sqlite3目录
3. 在终端环境将当前目录切换至/usr/local/sqlite3,并且下面所有目录均在该目录下完成。
4. 配置源代码程序包,生成makefile文件。< $ 表示命令行提示符>
$./configure --prefix=/usr/local/sqlite3
5. 编译并安装 $make   $make install
*如果编译过程中出现TCL相错误,请输入如下配置命令
$./configure --disable-tcl --prefix=/usr/local/sqlite3 并再次执行第5步。
6. 至此编译安装全部完成。会出现/usr/local/sqlite3/lib目录,包括编程时所需要API的sqlite3.h头文件。

Sqlite3使用
1. 一共有两种方法可是使用Sqlite3,分别是终端命令行方式和C/C++API调用编程方式。
2. 命令行方式:在FC6终端输入$sqlite3 dbname(dbname没有具体扩展名要求,任意都可以,类似netmanager.epon)会进入命令行方式并对dbname数据库文件进行操作sqlite>
常用命令:
a) .q 退出
b) .tables列出所有当前数据库表格
c) .databases列出所有数据库
d) .help帮助
e) --表示注释
f) 可以直接执行SQL指令,以分号;结束。以下为部分常用SQL指令,请注意sqlite3中无数据类型概念,故不需要声明,但在转换具体数据时要考虑。
建表  create table table_name(field1,field2,…);
建索引  create index index_name on table_name(field1,field2,…);
新建记录 insert into table_name values(data1,’data2’,….)
查询记录 select field1,field2…. From table_name where <condition> order by
更改记录 update table_name set field1=’data1’, field2=data2,… where <condition>
删除记录 delete from table_name where <condition>
g) 导出、导入数据(需要在终端命令行)
$sqlite3 dbname “.dump”>output.sql
$sqlite3 dbname <output.sql
详细运用可见http://blog.pfan.cn/lounger/26540.html

 

3. C/C++API调用编程方式,引用头文件#include <sqlite3.h>。 具体API请查看C/C++ Interface For SQLite Version 3 http://www.sqlite.org/capi3ref.html。 在gcc编译时需要

注意加入sqlite3库文件的参数,例如gcc sqlite3test.c -o sqlite3test.out -lsqlite3。

下面是我测试的简单程序,完成打开、插入记录、新建表、关闭等功能,其他的操作完全可以通过SQL语句的执行来进行,故不再进行调试。编译完全正常通过。
#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"  //放在容一个文件夹下面
#define _DEBUG_

int main( void ){
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("wx.db", &db); //打开指定数据库文件,如果不存在将创建
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else printf("You have opened wx.db successfully!\n");
 //创建一个表,如果该表存在,则不创建,并给出提示信息,存储在zErrMsg
char *sql ="CREATE TABLE TEST(ID INTEGER PRIMARY KEY,NAME,AGE);";
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

#ifdef _DEBUG_
printf("%s\n",zErrMsg);
#endif

//插入数据
sql = "INSERT INTO TEST VALUES( NULL, 'WenXu',7);";
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
printf("You have insert a new record!\n");

sqlite3_close(db); //关闭数据库
return 0;
}
在终端通过sqlite3命令行查询结果,注意路径
$sqlite3 wx.db
>select * from test;

sqlite3_exec的函数,用于在程序中执行SQL语句管理数据库的,原型说明如下:
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be executed */
sqlite_callback, /* Callback function */
void *, /* 1st argument to callback function */
char **errmsg /* Error msg written here */);

  评论这张
 
阅读(1935)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018