[国嵌攻略][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 ...
随机推荐
- 用js筛选数据排序
题目 参考以下示例代码,页面加载后,将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示 <!DOCTYPE html> ...
- Effective Java 第三版——12. 始终重写 toString 方法
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Oracle学习笔记_07_模糊查询
附录:参考资料 1.Oracle sql语言模糊查询--like后面的通配符 2.oracle sql语言模糊查询--通配符like的使用教程
- python爬虫爬取大众点评并导入redis
直接上代码,导入redis的中文编码没有解决,日后解决了会第一时间上代码!新手上路,多多包涵! # -*- coding: utf-8 -*- import re import requests fr ...
- 如何用Fritzing实现元器件自定义接线图
在用Micropython开发板完成小实验时,很多朋友反应对照接线图实际接线有时会有一些困扰.今天给大家介绍一款画图软件Fritzing 看看是怎么自定义制作接线图的. 前提条件 1.准备好元器件 ...
- Python爬虫知识点二
一.request库 import json import requests from io import BytesIO #显示各种函数相当于api # print(dir(requests)) u ...
- 微信小程序 - 上拉加载
demo.wxml 文件 <view wx:for="{{listdata}}" wx:key="listdata" class='listitem'& ...
- QuickChm 制作chm文档 chm文档脚本错误,乱码
最近学习bootstrap,到网上找了一些chm格式的文档,发现有些老旧,于是决定自己制作一个 用过以下这些chm制造器,包括easychm,chm精灵,chmeditor,chmfactory等等, ...
- python之Number
1.Python number数字 Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 创建一个numbe ...
- For循环将将数字集合分类写入字典
有以下数字集合[11,22,33,44,55,66,77,88,99,25,35,45,66,88],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中.即{'k1' ...