[国嵌攻略][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 ...
随机推荐
- JavaScript中的数组对象遍历、读写、排序等操作
以百度前端技术学院的js任务三为例,复习一下关于js数组的几个点 题目 <!DOCTYPE> <html> <head> <meta charset=&quo ...
- Android测试:Building Local Unit Tests
原文:https://developer.android.com/training/testing/unit-testing/local-unit-tests.html 如果你的单元测试没有依赖或者只 ...
- 通过 备份文件 恢复/迁移 gitlab
=============================================== 2017/10/20_第1次修改 ccb_warlock = ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- Sublime Text 使用教程
Sublime Text 是一款非常轻量级而且功能十分强大的编辑器,支持大量插件,深受前端开发者的喜爱.多的不说,我们直接进入正题. 1.下载 ①.官网下载地址:http://www.sublimet ...
- Python核心编程--浅拷贝与深拷贝
一.问题引出浅拷贝 首先看下面代码的执行情况: a = [1, 2, 3] print('a = %s' % a) # a = [1, 2, 3] b = a print('b = %s' % b) ...
- 第一个Vue插件从封装到发布
前言 这是我封装的第一个Vue插件,实现的功能是滑动选择省市区,虽然只是一个简单的插件,但还是挺开心的,记录一下步骤. 插件地址:https://github.com/leichangchun/vue ...
- WPF-控件(1)
小记:最近公司使用WPF开发一款新的产品,从零基础开始学习WPF,在看书的过程中,有些内容需要规整到一起,最终选择了博客园,希望对自己所掌握的知识有所规整. --------------------- ...
- RAID常用级别的比较
[转]RAID常用级别的比较 特点 硬盘及容量 性能及安全 典型应用 raid 0 用于平行存储,即条带.其原理是把连续的数据分成几份,然后分散存储到阵列中的各个硬盘上.任何一个磁盘故障,都将导致数据 ...
- 淘宝NPM源的使用
npm作为国外的node仓库安装工具,自然会受到我大长城防火墙的干扰,国内用户在安装相关的资源的时候,会出现安装失败,以及速度很慢的情况.为了解决npm安装的问题,国内出现了很多npm的镜像网址,ta ...