[国嵌攻略][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 ...
随机推荐
- bzoj 4198: [Noi2015]荷马史诗
Description 追逐影子的人,自己就是影子. --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由& ...
- php生成雪花图像(不美观请见谅)
<?php /* //新建图像 //雪花 @header("Content-Type:image/png"); $w = 500; $h = 500; //create ...
- jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解 ----转载
1.(function($) {-})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){-} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...
- df 命令详解
一.df 作用: 显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...
- 点击盒子选中里面的单选框,并给盒子添加相应样式,美化单选框、复选框样式css用法,响应式滴
pc效果图: 移动端效果图: 代码直接上: <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...
- 微信红包店小程序开发过程中遇到的问题 php获取附近周边商家 显示最近商家
最近公司在做一个项目就是微信红包店.仿照的是微信官方在做的那个红包店的模式.客户抢红包,抢到以后到店消费,消费以后就可以拿到商家的红包了. 项目中的两个难点: 1通过小程序来发红包 这个之前在开发语 ...
- Head First设计模式之备忘录模式
一.定义 不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样就可以将该对象恢复到原先保存的状态 二.结构 备忘录模式中主要有三类角色: 发起人角色:记录当前时刻的内部状态, ...
- css中的 nav ul li ul 与 nav>ul>li 这两种写法的区别
<nav> <ul id="a"> <li>a1</li> <li>a2</li> <li>a3 ...
- Python模块学习------ 多线程threading(2)
一.避免使用thread模块,使用threading模块的原因: 1. 更高级别的threading模块更为先进,对线程的支持更加完善.而且使用thread模块的属性有可能会与threading 出现 ...
- socket模型处理多个客户端
最近学完了简单的socket编程,发现其实socket的网络编程其实并没有什么难度,只是简单的函数调用,记住客户端与服务端的步骤,写起来基本没有什么问题. 在服务器程序的设计中,一个服务器不可能只相应 ...