[国嵌攻略][182][Sqlite嵌入式数据库移植]
数据库系统构成
在计算机系统中,保存数据的方式一般有两种:
1.普通文件方式
2.数据库方式
相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性。
数据库系统一般由三个部分构成
1.数据库
2.数据库管理系统
3.数据库访问应用
sqlite属于数据库管理系统。在数据库中,数据都是以表的形式存在。表与表之间,可能存在关系。sql(结构化查询语言),是一种特殊的编程语言,用于访问数据库中的数据。
移植sqlite到开发板
1.解压
tar zxvf sqlite-autoconf-3070800.tar.gz
2.配置
mkdir _install
./configure –-host=arm-linux –-prefix=${PWD}/_install
3.修改Makefile
搜索-DPACKAGE_STRING=\"sqlite\ 3.7.8\"
删除3.7.8路径前空格,-DPACKAGE_STRING=\"sqlite\3.7.8\"
4.编译
make
5.安装
make install
生成的sqlite数据库管理系统在_install/bin/目录下,拷贝到.../rootfs/sbin/目录下。
生成的库函数在_install/lib/目录下,拷贝到.../rootfs/lib/目录下。
编译数据库访问应用程序
arm-linux-gcc -L .../_install/lib -lsqlite3 -I .../_install/include db.c -o db
使用数据库访问程序
1.创建
./db student.db “create talbe stu(number smallint not null primary key, name varchar(20));”
2.插入
./db student.db “insert into stu values(1, ‘xiao ming’);” 字符串用单引号
./db student.db “insert into stu values(2, ‘xiao hong’);” 字符串用单引号
3.查询
./db student.db “select * from stu where name like %xiao%;”
4.删除
./db student.db “delete from stu where number = 2;”
db.c
#include <stdio.h>
#include <sqlite3.h> int main(int argc, char **argv);
static int callback(void *notUsed, int argc, char **argv, char **colName); int main(int argc, char **argv){
//检测参数项
if(argc != ){
printf("Usage:\n\t%s <database> <sql statement>\n", argv[]);
return -;
} //打开数据库
sqlite3 *db;
int isErr; isErr = sqlite3_open(argv[], &db);
if(isErr){
//显示错误值
printf("Can not open: %s", sqlite3_errmsg(db)); //关闭数据库
sqlite3_close(db); return -;
} //访问数据库
char *errMsg;
int isExec; isExec = sqlite3_exec(db, argv[], callback, , &errMsg);
if(isExec != SQLITE_OK){
//显示错误值
printf("Can not exec: %s", errMsg); //关闭数据库
sqlite3_close(db); return -;
} //关闭数据库
sqlite3_close(db); return ;
} static int callback(void *notUsed, int argc, char **argv, char **colName){
//显示回调数据
int i;
char *value; for(i = ; i < argc; i++){
printf("%s ", argv[i] ? argv[i] : "NULL");
}
printf("\n"); return ;
}
[国嵌攻略][182][Sqlite嵌入式数据库移植]的更多相关文章
- [国嵌攻略][173][BOA嵌入式服务器移植]
1.解压boa嵌入式web服务 tar zxvf boa-0.94.13.tar.gz 2.进入src目录生成配置文件 ./configure 3.修改生成的Makefile CC=arm-linux ...
- [国嵌攻略][100][嵌入式Linux内核制作]
Linux内核制作步骤 1.清除原有配置 make distclean 2.配置内核 选择一个已有的配置文件简化配置 make menuconfig ARCH=arm 3.编译内核 ARCH指明处理器 ...
- [国嵌攻略][149][Yaffs2文件系统应用]
嵌入式系统自启动 MTD技术通过把Nand FLash划分成bootloader分区,Linux kernel分区和file system分区来达到自启动的效果. 配置和编译内核 1.配置Linux内 ...
- [国嵌攻略][148][MTD系统架构]
MTD设备概述 Flash在嵌入式系统中是必不可少的,它是bootloader.Linux内核和文件系统的最佳载体.在Linux内核中引入了MTD子系统为NOR Flash和Nand FLash设备提 ...
- [国嵌攻略][060][LCD工作原理解析]
LCD硬件体系 1.LCD液晶屏 液晶属于一种有机化合物,分子形状为长棒状,在不同的电流作用下,分子会有规律旋转,这样对光线产生一定的控制形成一个像素,而很多像素右可以构成完整的图像. LCD是Liq ...
- [国嵌攻略][051][NandFlash原理解析]
扮演角色 相当于嵌入式设备的硬盘 NandFlash分类 1.SCL(single level cell):单层式存储 2.MLC(multi level cell):多层式存储 3.SCL在存储格上 ...
- [国嵌攻略][045-046][一跃进入C大门]
[一跃进入C大门] 跳转方式 1.相对跳转:b或bl指令,通过计算两个地址之间的差值来给pc赋值相对跳转 2.绝对跳转:ldr指令,通过给pc直接赋值,完成绝对跳转 代码编写 1.在汇编代码中直接使用 ...
- [国嵌攻略][179][OpenSSL加密系统]
未加密传输的安全弊端 如果在网络传输中没有加密,就是以明文传输.传输的数据可以被抓包软件直接截获,并能读取里面的数据. 加密基本原理 1.对称加密 2.非对称加密 2.1.公钥私钥 公钥和私密要配对. ...
- [国嵌攻略][174][CGI快速入门-网页控制LED]
CGI程序(Common Gate Way Interface) 在服务器外部供服务器调用的程序,CGI程序与服务器配合后能让服务器完成更强大的功能. 1.浏览器通过HTML表单或超链接请求指向一个C ...
随机推荐
- 如何在yarn上运行Hello World(一)
1.YARN是什么 YARN (Yet Another Resource Negotiator,另一种资源协调者) 是hadoop上的一种资源调度器,它是一个通用资源管理系统,可以为上层应用提供统一 ...
- ioutil包二
ioutil包二 (原创随笔,转载请注明出处 http://www.cnblogs.com/majianguo/p/8016426.html) ioutil包实现了一些I/O实用功能,导出了7个函数和 ...
- maven 打包Could not resolve dependencies for project和无效的目标发行版: 1.8
1.maven 打包Could not resolve dependencies for project 最近项目上使用的是idea ide的多模块话,需要模块之间的依赖,比如说系统管理模块依赖授权模 ...
- ntopng 推送solr
1.修改代码在且不说 2.修改完之后先卸载原先的ntopng 使用 whereis ntopng 找到安装目录,然后删除 /usr/local/bin/ntopng /usr/local/share/ ...
- 跟我一起学JQuery插件开发教程
在逛codeproject网站的时候,突然看到一篇文章:How to write plugin in Jquery. 如果对E文好的同学 ,可以看上面的连接.现在我把上面网站的及结合自己的想法写这篇文 ...
- Spring3.x企业开发应用实战读书笔记 —— 第三章IoC容器概述
声明: 本篇博客绝大多数内容为<Spring3.x企业开发应用实战>一书原内容,所有版权归原书作者所有!,仅供学习参考,勿作他用! 3.2 相关Java基础知识 Java语言允许通过 ...
- Sql 的 RAISERROR用法
http://www.yesky.com/imagesnew/software/tsql/ts_ra-rz_5ooi.htm RAISERROR 返回用户定义的错误信息并设系统标志,记录发生错误.通过 ...
- webpack之loader实践
初识前端模板概念的开发者,通常都使用过underscore的template方法,非常简单好用,支持赋值,条件判断,循环等,基本可以满足我们的需求. 在使用Webpack搭建开发环境的时候,如果要使用 ...
- ABP架构学习系列二:ABP中配置的注册和初始化
一.手工搭建平台 1.创建项目 创建MVC5项目,手动引入Abp.Abp.Web.Abp.Web.Mvc.Abp.Web.Api 使用nuget添加Newtonsoft.Json.Castle.Cor ...
- Nginx 解决WebApi跨域二次请求以及Vue单页面问题
一.前言 由于项目是前后端分离,API接口与Web前端 部署在不同站点当中,因此在前文当中WebApi Ajax 跨域请求解决方法(CORS实现)使用跨域处理方式处理而不用Jsonp的方式. 但是在一 ...