嵌入式基础知识 2

sqlite数据库===>SQL

0、介绍

1、数据库的安装

1.1 拷贝压缩包 sqlite-autoconf-3080500.tar 到linux虚拟机中
1.2 解开压缩包 ===》 tar -zxvf sqlite-autoconf-3080500.tar.gz
1.3 进入到解开的目录 sqlite-autoconf-3080500 中,cd sqlite-autoconf-3080500
1.4 ./configure
1.5 make
1.6 suduo make install

验证是否安装成功: 在命令行输入 sqlite3 回车 出现sqlite>表示安装成功。
可以用 .q 退出数据库系统
如果屏幕出现 ....> 输入 ; 在输入 .q 退出

如果没有以上提示,或者出现两行很长的MD5值,意味着安装过程中版本异常
whereis sqlite3

cp ./sqlite3 /usr/bin/
cp ./sqlite3 /usr/sbin/

chmod 777 /usr/local/bin/sqlite3

之后再次验证是否能成功启动:在命令行输入 sqlite3 回车 出现sqlite>表示安装成功。
可以用 .q退出数据库系统

注意:数据库中的基本单位是表,可以在数据库中创建多个表,每个表可以单独在,也可以互相之间有关联。

每个表的基本单位是行和列
数据库的设计三范式:
第一范式: 所有的列唯一
第二范式: 所欲的行唯一
第三范式: 数据内容的无冗余

2、数据库的常规使用 ====>所有的sqlite数据库管理命令都是以: . 开始

常规数据库管理命令;===》只针对sqlite数据库有效。

2.0 首先在启动数据库系统过程中创建数据库
===》sqlite3 xxx.db ===>表示手工创建一个名称为xxx.db的数据库

2.1 .help 来查看当前系统支持的所有管理命令
2.2 .quit = .q 表示退出当前系统
2.3 .database 显示当前打开的数据库文件
2.4 .tables 显示数据库中所有的表名====》如果没有任何记录表示数据库中无表
2.5 .schema xxx 显示当前数据库中xxx表的表结构

常规的数据库操作命令:====》使用SQL 语言操作,兼容所有支持SQL语言的数据库
注意:所有的该部分的操作都必须以 ; 结尾,否则程序会继续等待输入知道出现 ;

0、创建一个数据库 ===》touch test.db ===》创建一个数据库文件
====》sqlite3 test.db ===》创建的同时打开数据库

注意:所有的sql语句都支持 -- 开头的注释,表示一行无效
/* */ 表示多行注释,类似C 语言

1、创建表
create table xxx (f1 types, f2 type2,....);
eg: create table test (id int, name txt,class int);
其中:列字段的类型有如下几种:
int 整形 txt 字符串 blob 二进制类型 real 数字

2、删除表:
drop table xxx;

3、增加记录
insert into xxx (f1,f2....) values (v1,v2,v3...);
eg: insert into test (id,name) values (1,"abc");

insert into xxx values(v1,v2...);
eg:insert into test values (2,"def",3);

4、删除记录
delete from xxx ;=====》删除xxx表中所有数据。
delete from xxx where id = x; ====>根据id的值来指定删除
delete from xxx where id = x and name = "zhang";

5、查询记录
select * from xxx; ====>查询xxx表中所有数据
select id from xxx; ===>只查询xxx表中的id列数据
select id,name from xxx; ===>查询xxx表中指定的id和name列数据。

6、改变记录 = 删除记录+增加记录

练习:要求 手工创建一个数据库,并设计一个独立的用户表t_user,该表的字段必须包含 id,name,age

依次插入5个不同身份的用户到表中,并用selelct查询显示。

删除其中id为 奇数的记录,并最后显示其他剩余的用户信息。

可视化的工具

批量导入导出

导入: sqlite3 test.db < test.sql
导出: sqlite3 test.db .dump > test2.sql

3、数据库编程接口

头文件:sqlite3.h
编译过程: -lsqlite3

打开数据库 ====》操作数据库(查询动作,插入删除动作) =====》关闭数据库

3.1 打开数据库
int sqlite3_open(char * path, sqlite3 **db)
功能:打开指定的path路径下的数据库
参数:path 数据库文件所在的路径+文件名
db 数据库类型指针,打开之后与该数据库关联
返回值:成功0
失败 非0

3.2 关闭数据库
int sqlite3_close(sqltie3 *db);
参数: db 要关闭的数据库指针
返回值:成功 0 失败 非0

3.3 操作数据库

查询动作: sqlite3_get_table()
int sqltie3_get_table(sqlite3 *db ,const char *sql,char ***rest,
int * row, int * col,char **errmsg);
功能:通过以上函数可以从指定的db数据库中根据sql所表示的sql语句执行。
并将结果rest返回,row表示最终查询的结果行数,col表示最终查询
的结果列,errmsg 如果错误则存储错误信息。

参数:db 要查询的数据库
sql 要执行的查询sql语句,一般用select开始
rest 返回的结果集指针
row 返回的结果中的行数
col 返回的结果中的列数
errmsg 存储错误信息
返回值:成功 0
失败 错误码

修改动作: sqlite3_exec()
int sqlite3_exec(sqlite3 *db,const char *sql,slqite3_callback callback,
void *arg, char ** errmsg);
功能:该函数可以执行任何针对数据库操作的sql语句。
参数: db 要操作的数据库指针
sql 要执行的sql语句 ===》注意:如果该语句是select 查询语句则callback有效
如果该语句是insert 或者delete则callback可以不用。
callback 回调函数
arg 回调函数的 参数
errmsg 存储错误信息

返回值:成功 0
失败 非0

回调函数:typedef int (*sqlite3_callback)(void * arg,int n,char **f_value,char **f_name);
功能:当该函数被调用的时候表示有数据执行结果返回并存储到f_value和f_name中。
参数:arg 从外部传入的参数
n 查询结果中包含的列的个数
f_value 行的值
f_name 列的值

返回值:成功 0
失败 -1

练习:手工创建一个数据库并设计一个t_user 表。
用代码方式插入5 条记录
并最后的所有信息打印输出到终端。

时间: 2024-12-22 22:37:55

嵌入式基础知识 2的相关文章

嵌入式基础知识与嵌入式设计应具备的基本技能

嵌入式系统的定义:               以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能.可靠性.成本.体积.功耗的严格要求的专用计算机系统. 嵌入式系统的特点:               系统内核小:嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多               专用性强:嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植               系统精简:嵌入式系统

嵌入式基础知识

================ 内存管理 ===============1.从地地址到高地址依次为:代码区.数据区.堆区.栈区.命令行参数及环境变量区域 2.局部变量:局部变量位于栈区 栈区特点: 1.栈区当中变量未初始化之前都为随机值 2.在变量作用域结束后,变量空间被操作系统收回 全局变量:全局变量位于数据区 数据区特点: 1.数据区中变量未初始化之前都是0 2.在程序结束后,变量空间被操作系统收回 静态变量:静态变量位于数据区特点: 1.数据区中变量未初始化之前都是0 2.在静态变量作用

开始ITGEGE教育社区的视频录制----嵌入式基础知识讲解

从8月份开始,陆陆续续要对我的第一份兼职工作ITGEGE讲师做教学视频录制了,本人水平有限,我只讲一些开发在工作中的应用,其它细节的东西不做深究,毕竟本人工作经验和精力也有限,白天要上班,特别是最近又有新的项目要来了,要学习新的东西,平时也会在CSDN的特邀编辑选拔一些CSDN的精选文章,这也算是第二份兼职吧,和CSDN社区合作了,我觉得挺不错的,既有收益又能学到CSDN社区一些大神写的东西,感谢CSDN的陈秋歌女士的信任和支持.再者我比较喜欢玩的,毕竟适当学习要适当放松,愉悦一下也不错.欢迎一

嵌入式Linux基础知识

一.构建嵌入式开发环境 1.编译bootloader并烧写到板子中---uboot, 可以自己定制bootloader and logo 2.编译file system 并烧写--内嵌APP 3.编译linux kernel----定制drivers and logo 4.编译APP 5.编译file system 备份---内嵌APP 6.安装交叉编译工具 7.安装调试工具 二.嵌入式编程基础知识 一般的c/c++文件要变成可执行文件需要经过预处理.编译.汇编.和连接等4个步骤 1)预处理 以

【分享】4412开发板-嵌入式Linux开发需要掌握的基础知识和技能

本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器 2.Shell 编程基础

嵌入式基础教程之嵌入式系统的知识体系

嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计算机应用的延伸(MP3.手机.通信.网络.计算机外围设备等).从这些应用可以看出, 要完成一个以MCU为核心的嵌入式系统应用产品设计,需要硬件.软件及行业领域相关知识.硬件主要有MCU的硬件最小系统.输入/输出外围电路.人机接口设计.软件设计有固化软件的设计,也可能含PC机软件的设计.行业知识需要通过协作.交流与总结获得. 概括地说,学习以MCU为核心的嵌入式系统,需要以

嵌入式中烧写程序的基础知识有哪些

在嵌入式的基础知识学习中,烧写程序是必备的知识点之一,需要把写的程序代码烧写到单片机上,在单片机上检验写的程序代码是否正确,是否能够正常运行,下面我们来学习下什么是烧写和固件.常见的几种烧写方式.三种编程方式的区别. 简单整理下固件.烧写的定义以及烧写过程的几种方式. 一.什么是烧写(下载)和固件 嵌入式系统需要预先将程序写入ROM/FLASH中,在启动时载入运行这些程序,将已经生成的程序写入ROM/FLASH的过程叫做烧写.这样固化在存储介质上的文件叫固件(firmware).那么烧写即为更新

【RL-TCPnet网络教程】第2章 嵌入式网络协议栈基础知识

第2章        嵌入式网络协议栈基础知识 本章教程为大家介绍嵌入式网络协议栈基础知识,本章先让大家有一个全面的认识,后面章节中会为大家逐一讲解用到的协议. 基础知识整理自百度百科,wiki百科等. 2.1   初学者重要提示 2.2   TCP/IP协议栈简介 2.3   TCP/IP参考模型 2.4   OSI参考模型 2.5   RL-TCPnet和参考模型的对应关系 2.6   网络协议收录文件RFC 2.7   以太网和IEEE 802.3 2.8   网线相关知识 2.9   总

windows上Python开发--3.Django的基础知识

最近两天下了班,没事学习了django的开发,今天做个总结.其实大家可以从百度,google搜到一些django的入门视频,初步了解一下django的框架.学习一些基础的概念和知识.本篇主要是对自己这两天做的做个总结. 1.创建第一个views.py 上一篇文章我们在windows上搭建好了django的开发环境并建立一个测试demo. 在settings.py的同级目录下新建views.py目录.并输入以下代码 from django.http import HttpResponse def