查看“第十课--microWRT 应用开始之数据库”的源代码
←
第十课--microWRT 应用开始之数据库
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | 上一节教程中我们介绍了如何在microWRT上搭建服务器,那仅仅是个框架,任何服务器都离不开数据库的支持。我们耳熟能详的数据库就是MySQL,但是它的个头比较大。 对于小型的嵌入式设备有时候不是很合适。所以在一些小型设备上,经常会用到一些轻量级的关系数据库。本节教程就来介绍一款常见的数据库Sqlite,为了满足其他一些 更高级的需要,本教程也简单介绍了MySql数据在microWRT的使用。 ==SQLite 数据库介绍== Sqlite是一款轻量级的关系型数据库,它主要是为嵌入式系统而设计的,因此它本身占用的系统资源比较少,没有进程的概念,没有严格的数据结构限制。 并且语法保持了和其他关系型数据库高度的一致性,是使用者可以很容易的上手使用。基于上述的各种特点,它非常适合用openwrt这样的嵌入式系统。 目前Sqlite3 是SQLite的最新版本,关于Sqlite的详细资料,可以参考官网。 http://www.sqlite.org 1. SQLite 的特点 1)SQLite 没有服务,它总是嵌入到各种编程语言总,不需要连接到一个数据库服务。不像MySQL,它在运行的时候需要起一个demon程序。 2)SQLite 中没有数据库的概念,虽然你可以创建一个数据库,但是它的本质就是一个文件,所有对数据的操作都是文件来实现的。 3)SQLite 采用I/O直接操作,因此它的性能非常高,但是也正是它的这特点带来一个问题,那就是访问数据的同步问题,需要通过加锁机制解决这个问题。但是SQLite他把表分离成不同的文件,这样也就间接解决了这个问题。 4)SQLite 在稳定性上也比较好,尤其是断电异常及保护机制。 2. SQLite 的安装 上面我们已经提到SQLite没有所谓的SQLite服务,在各种语言中已经包含了相关的库,直接调用就好了。基于这种原理,我们只要在microWRT上安装SQLite命令, 就可以在命令行下查看,操作数据文件。 安装SQLite命令,如果固件基于openwrt的BB版本,可以直接运行下面的命令来安装。 root@microWrt:~# opkg update root@microWrt:~# opkg install sqlite3-cli 3. SQLite 的操作 创建数据库 root@OpenWrt:~# sqlite3 /mnt/sda/test_sqlite3.db SQLite version 3.8.7.4 2014-12-09 01:34:36 Enter ".help" for usage hints. sqlite> 创建表,包含两个column,name 和age。 create table test( name varchar(60), age int(3) ); 插入数据,查看数据 sqlite> insert into test(name,age) values('Jason','30'); sqlite> insert into test(name,age) values('Tiki','34'); sqlite> select * from test; 4. 使用PHP操作SQLite 关于如何使用PHP语言来使用SQLite的详细介绍,可以参考 www.php.net 为了保证PHP能够使用SQLite,需要先安装一个支持包。 root@microWrt:~# opkg install php5-mod-sqlite3 下面的程序实现了一个查询数据库的web程序。 <?php //打开数据库文件,以读写形式,如果文件不存在就尝试创建 $db = new SQLite3("/mnt/sda/test_sqlite3.db",SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE); //设置sqlite存储编码 $db->query('PRAGMA encoding="UTF-8"'); //设置sqlite同步缓存方式 $db->query('PRAGMA synchronous = NORMAL'); //查询 $result=@$db->query("select * from test"); if ($db->lastErrorCode() !== 0) { //如果查询有错则显示错误 echo "Error: ".$db->lastErrorMsg(); exit; } //准备输出 $output=""; while ($row = $result->fetchArray(SQLITE3_ASSOC)) { $output.="<b>name: </b> ".$row['name']; $output.="<b>age: </b> ".$row['age']; } $result->finalize(); //输出结束 //关闭数据库 $db->close(); ?> <html> <head> <title> MicroWRT </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body style="background-color: #f3f3f3"> <?=$output;?> </body> </html> 运行程序后的输出为: name:Jason age:30 name:Tiki age:32 ==MySQL 数据库介绍== MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,已经被Oracle公司收购。MySQL是最流行的关系型数据库管理系统, 在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。 关于MySQL的详细介绍,请参考官网:http://www.mysql.com 就如本节教程开始所讲,在嵌入式系统中安装MySQL不是很合适,因为系统CPU性能不是很强。 1. MySQL安装与配置 不同于嵌入式的SQLite3,MySQL需要独立安装开启服务才能正常启动使用。 安装MySQL root@microWrt:~# opkg install mysql-server 注意:一般需要把MySQL安装入U盘,所以需要用”-d 安装路径“ MySQL的库存储位置一般在/var/lib下,由于OpenWrt的var文件夹是内存临时文件目录,所以我们要重新定义这部分路径信息。 准备库文件存储位置 root@microWrt:~# mkdir -p /mnt/sda/data /mnt/sda/data/mysql /mnt/sda/data/tmp 初始化默认的MySQL数据 root@microWrt:~# mysql_install_db --force 2. MySQL启动 设置启动服务 root@microWrt:~# /etc/init.d/mysql enable 手工启动一次 root@microWrt:~# /etc/init.d/mysql start 3. 使用PHP操作MySQL 对于MySQL操作,在网上可以找到大量的例子,本文只是提供一个简单的测试例子。 安装PHP的MySQL支持 root@OmicroWrt:~# opkg install php5-mod-mysql 一个查询数据库的WEB例子 <?php //简单演示MySQL的连接是否成功 $link = mysql_connect('127.0.0.1', 'root', ''); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?> |}
返回至
第十课--microWRT 应用开始之数据库
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息