嵌入式数据库 sqlite 移植及使用

  • 一、实验目的
  • 二、实验内容
  • 三、预备知识
  • 四、实验设备及工具(包括软件调试工具)
  • 五、实验步骤
  • 实验一:移植嵌入式数据库 sqlite
    • 1~5:安装 sqlite 数据库
    • 6:数据库的使用
      • 方式1:命令操纵数据库
      • 方式2:编程操纵数据库
    • 实验以外(有兴趣可以看看)
  • 实验二:嵌入式Qt实验
  • 一、QT安装

更多笔记内容可以查看 计算机专业基础笔记目录

一、实验目的

理解嵌入式软件移植的基本方法,掌握 sqlite 数据库软件移植的步骤,掌握 sqlite 开发的两种方式 — 命令模式和 C代码开发模式 的使用方法,并编程实现简单通讯录查询实验。

二、实验内容

实验4.1 移植嵌入式数据库 sqlite
实验4.2 简单通讯录查询实例设计和测试

三、预备知识

Linux 使用、数据库相关知识等

四、实验设备及工具(包括软件调试工具)

硬件:ARM 嵌入式开发平台、PC 机 Pentium100 以上、串口线。
软件: WinXP 或 UBUNTU 开发环境。(我用的 DeepIn)

五、实验步骤

实验一:移植嵌入式数据库 sqlite

1~5:安装 sqlite 数据库

第一步,解压缩 sqlite 源码,命令 tar xvzf sqlite-autoconf-3080900.tar.gz

在解压后的文件夹下,可以看到源码文件有(shell.c)和(sql3.c)文件;

生成 Makefile 的配置脚本文件 ./configure --prefix=/opt/sqlite

并检查当前文件夹下(存在)Makefile 文件。(可以仔细看看上上张图,那时候还没有呢。)

第二步利用 configure 脚本文件生成基于 ARM 实验台的 Makefile,具体命令为 ./configure CC=arm-linux-gcc –prefix=/opt/sqlite –host=arm-linux,并检查当前文件夹下(存在)Makefile 文件。

第三步,编译 sqlite,命令为 make,编译过程中使用的编译器为 arm-linux-gcc

第四步,安装 sqlit,命令为 make insatll。安装完成后到 \opt\sqlite 文件夹下去查看相关文件,可以看到该文件夹下有(bin)、(include)、(lib)和 share 文件夹,其中可执行文件 sqlite3 位于(./bin)文件夹,库位于(./lib)文件夹。

第五步,将 sqlite3 拷贝到开发板 bin 目录下,将库下的文件拷贝到开发板的 lib 目录下【注意链接文件的创建】

6:数据库的使用

方式1:命令操纵数据库

在超级终端环境下创建数据库 stucomm.db,命令为 ./sqilte3 stucomm.db
(如果没有配置环境变量则要在 /opt/sqlite/bin 目录下输入命令)

创建数据表 stutable,字段包括 id 整型,name 字符型,phoneNum 字符型,具体命令为:

create table stutable(id integer, name text, phoneNum text);

插入2条记录,记录信息如下(001,zhangsan,10086)、(002,lisi,10000),具体命令为:

insert into stutable values(1, 'zhangsan', 10086);
insert into stutable values(2, 'lisi', 10000);

查询电话号码为 10086 的相关记录信息,命令为:

select * from stutable where phoneNum = 10086;

方式2:编程操纵数据库

使用 C编程模式 完成上述功能,代码如下:

#include<stdio.h>
#include"sqlite/sqlite3.h"/*
(1)打开数据库:
int sqlite3_open(const char *filename, sqlite3 **ppDb);
- filename:待打开(创建)的数据库文件名
- ppDb:sqlite3数据库句柄的指针(2)操作数据库:sqlite可以提供了接口,可以把SQL操作语句直接嵌入到sqlite函数中来执行。
int  sqlite3_exec(sqlite3* ppDb, const char *sql, int(*callback)(void*, int, char**, char**), void*, char **errmsg);
- sqlite3* 是open函数得到的指针
- constchar*sql是一条sql 语句,以\0结尾
- sqlite3_callback 是回调,当这条语句执行之后,sqlite3会去调用这个函数
- void*是调用者所提供的指针, 调用者可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面, 如果不需要传递指针给回调函数,可以填 NULL
- char** errmsg 是错误信息(3)关闭数据库:数据库不使用后需要关闭。
int sqlite3_close(sqlite3 *ppDb);
*/// 回调函数
int callback(void *, int, char**, char**);
// 检查数据库操作是否正常执行
int check_opt(sqlite3 *db, int nResult, char* errmsg) {sqlite3_close(db); // 关闭数据库printf("%s", errmsg);sqlite3_free(errmsg);return 0;
}int main() {sqlite3 * db;// 打开内存数据库int nResult = sqlite3_open(":memory:", &db);if (nResult != SQLITE_OK) {printf("打开数据库失败\n");return 0;} else {printf("打开数据库成功\n");}// 错误信息char* errmsg;nResult = sqlite3_exc(db, "create table stutable(id integer, name text, phoneNum text);",NULL, NULL, &errmsg);check_opt(db, nResult, &errmsg); // 检查操作是否正常执行nResult = sqlite3_exc(db, "insert into stutable values(1, 'zhangsan', 10086);",NULL, NULL, &errmsg);check_opt(db, nResult, &errmsg); // 检查操作是否正常执行nResult = sqlite3_exc(db, "insert into stutable values(1, 'zhangsan', 10086);",NULL, NULL, &errmsg);check_opt(db, nResult, &errmsg); // 检查操作是否正常执行nResult = sqlite3_exec(db, "select * from stutable where phoneNum = 10086;",callback, NULL, &errmsg);check_opt(db, nResult, &errmsg); // 检查操作是否正常执行int callback(void*, int nCount, char** pValue, cahr** pName) {for (int i = 0; i < nCount; i++) {printf("[%s] = [%s]\n", pName[i], pValue[i]);}return 0;}}

假设上述代码文件名为 sqlite_exp.c 文件,编译命令为:

arm-linux-gcc -o sql_exp sqlite_exp.c -l /opt/sqlite/include -L /opt/sqlite/lib

其中头文件位于 /opt/sqlite/include,库位于 /opt/sqlite/lib 下。

实验以外(有兴趣可以看看)

以上内容只是为了完成实验的报告。。。如果实际开发的话,我个人不推荐这么复杂的方式。

介绍一个更简洁的安装方法,在终端下输入以下命令:

sudo apt-get install sqlite3

之后在终端下输入如下命令,查看下安装好的 sqlite 的版本:

sqlite3 -version


然后安装 Sqlite3 编译需要的工具包:需要的话可以安装,非必要组件。

sudo apt-get install libsqlite3-dev

快速入门:

创建 Databases 文件夹:mkdir Databases
进入 Databases 文件夹:cd Databases/
sqlite3 test.db:若目录下存在 test.db 文件,则会打开该数据库文件,若不存在,则会创建一个数据库文件,并进入数据库操作。

查看数据库:.database
创建数据表:create table student(name varchar(10), age smallint);
查看数据表:.table
插入数据:

insert into student values('fck', 21);
insert into student values("shit",20);

查询数据:select * from student;
删除数据表:drop table student
退出数据库:.exit;

删除数据库:SQLite 无法同其他数据库那样删除数据库文件,即 DROP DATABASE test; 无效,但是我们可以直接像删除文件一样删除数据库文件,在 /Databases 目录下删除 test.db 文件即可。


安装其它语言的支持:

  • PHP支持:sudo apt-get install php5-sqlite
  • Ruby支持:sudo apt-get install libsqlite3-ruby
  • Python支持:sudo apt-get install python-pysqlite2

安装数据库可视化工具 sqlitebrowser:sudo apt-get install sqlitebrowser
sqlitebrowser 用法: sqlitebrowser test.db

实验二:嵌入式Qt实验

吐槽:不是我说。。。学校这教材和实验都是百年不更新的么…

一、QT安装

将 qt-sdk-linux-x86-opensource-2010.05.1.bin 拷贝到 /opt 目录下:

切换到命令行模式下,执行安装:

chmod 777 qt-sdk-linux-x86-opensource-2010.05.1.bin
./qt-sdk-linux-x86-opensource-2010.05.1.bin

跳出安装界面,一路下一步即可。

QTDIR=/opt/qtsdk-2010.05/qt
PATH=$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH_LIBRARY_PATH

具体开发过程就不写了…按照教程来即可(这份不要求交报告,就不写了


【嵌入式实验】《嵌入式数据库 sqlite 移植及使用》相关推荐

  1. 南京邮电大学嵌入式系统开发实验3:嵌入式数据库sqlite移植及使用

    实验3  嵌入式数据库sqlite移植及使用 一.实验目的 理解嵌入式软件移植的基本方法,掌握sqlite数据库软件移植的步骤,掌握sqlite开发的两种方式-命令模式和C代码开发模式的使用方法,并编 ...

  2. 嵌入式数据库Sqlite移植教程-转

    嵌入式数据库Sqlite移植教程 sqlite-3.3.6编译安装与交叉编译全过程详细记录 本文介绍的内容都是基于 Linux RedHat 9.0 平台的. 一.PC机编译安装 请阅读在安装包里的 ...

  3. Linux编译和下载嵌入式实验,嵌入式实验6交叉编译及Linux简单程序设计实验

    <嵌入式实验6交叉编译及Linux简单程序设计实验>由会员分享,可在线阅读,更多相关<嵌入式实验6交叉编译及Linux简单程序设计实验(7页珍藏版)>请在人人文库网上搜索. 1 ...

  4. Linux网络编程小项目sqlite,嵌入式数据库sqlite

    *************************************** * 嵌入式数据库sqlite在LPC22XX上的应用 * ******************************* ...

  5. 嵌入式数据库SQLite的编译、安装和使用[ZT]

    嵌入式数据库SQLite的编译.安装和使用 下文介绍的内容都是基于 RedHat Linux 9.0 平台的. 引言:sqlite简介 sqlite是嵌入式SQL数据库引擎SQLite(SQLite ...

  6. android 内嵌 数据库,安卓开发之嵌入式数据库sqlite的操作方法

    安卓App开发经常会需要嵌入式数据库sqlite的辅助,它可以存放我们必要的应用数据,下面介绍下如何使用java连接读取sqlite中的数据. 本文中的代码经本人测试可用,可以参考. 代码如下: DB ...

  7. 嵌入式数据库——SQLite

    文章目录 SQLite简介 MySQL与SQLite 基于嵌入式的数据库 SQLite基础 SQLite数据库安装 SQLite的命令用法 系统命令 基本命令 SQLite的编程操作 Result C ...

  8. linux根文件系统的移植 课程设计,定稿基基于ARM9嵌入式Linux引导程序研究与移植嵌入式综合实验报告完整版...

    <基<基于ARM9嵌入式Linux引导程序研究与移植>嵌入式综合实验报告.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)基基于ARM9嵌入式Linux引导程序研 ...

  9. Sqlite 移动嵌入式数据库Sqlite的日常SQL操作语句汇总

    序言:     嵌入式数据库Sqlite的基本sql使用汇总,使用测试起来,与关系型数据库mysql在语法上有很多的相似之处,先准备测试数据: CREATE TABLE COMPANY(ID INT ...

最新文章

  1. 西农大许金荣课题组在小麦赤霉病研究领域取得重要突破
  2. 图解VMWARE内存机制
  3. 电脑重装系统之后git pull报错 Permission denied (publickey)
  4. linux 文件 重命名 缓存,linux – rename()原子性和NFS?
  5. c python boost.python_如何利用Boost.Python实现Python C/C++混合编程详解
  6. 大数据之-Hadoop3.x_MapReduce_ReduceJoin案例需求分析---大数据之hadoop3.x工作笔记0128
  7. os,shutil操作——批量修改文件名,移动文件,读取文件
  8. API经济正在牵制技术的改革
  9. java小写金额转大写工具类
  10. 把linux文件夹压缩成tar.gz的命令
  11. linux双显卡配置_linux下的双显卡切换
  12. Python学习 --- 列表
  13. Linux下qt程序部署到ARM开发板上: error: Upload of file “你的程序“ failed. The server said: “Failure
  14. hadoop学习路线
  15. 高斯滤波/高斯模糊(Gaussian blur)和高斯噪声(Gaussian noise)
  16. Acme CAD Converter 的线宽要怎么设置啊
  17. qq、微信、微博的svg小图标
  18. 橡皮擦的英语_2019年成人高考考试,语文数学英语政治想得高分答题技巧看这里...
  19. psid mysql_eclipse连接MYSQL,保存数据到mysql里,哪出错了?
  20. hdu 2276【Kiki Little Kiki 2】

热门文章

  1. 如果“王思聪”们创业就一定能成功
  2. 巴菲特三季度赚301亿美元
  3. 为什么很多设计师都会选择mac?
  4. linux内核的队列实现移植
  5. 字符串处理_5个JavaScript的字符串处理库,不再996
  6. sql 线性回归_SQL Server中的Microsoft线性回归
  7. 隔离见证_云见证–一种使我们的生活更轻松的新功能
  8. sql azure 语法_将SQL工作负载迁移到Microsoft Azure:规划迁移
  9. 【BUAAOO】第四次博客作业
  10. vs2017_enterprise正式版离线安装包bt下载