范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

手把手教你在嵌入式设备中使用SQLite3

  摘要 :数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table),在嵌入式linux中有时候它也需要用到数据库,听起来好难,其实就是几个函数,掌握了就好。一、常见的数据库
  大型数据库(大型机)Oracle(亿级),中型数据库(分布式超大型)mysql(百万级),轻型数据库(嵌入式设备)sqlite(万级),访问数据库使用SQL语句,适用于所有的数据库。 二、安装SQLite3
  有C环境就可以调用sqlite 2.1直接用命令安装sudo apt-get update sudo apt-get install sqlite3 2.2 直接编译源码
  将源码拷贝到Ubuntu的非共享目录解压
  解压命令: tar zvxf sqlite-autoconf-3380500.tar.gz
  配置 cd sqlite-snapshot-201708031550 ./configure --prefix=/home/gec/sqlite
  编译 make
  安装 make install          三、SQLite的使用新建数据库文件 sqlite3 数据库文件的路径   //打开/创建 //比如:sqlite3 first.db
  3.1 基本操作命令.exit/.quit -------- 退出数据库命令行 .help -------------- 帮助说明信息 .tables ------------ 查看当前数据库中所有的表 3.2 数据库访问的SQL语句
  基本语法: 所有的SQL语句都以分号(;)结束 不区分大小写
  嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
  无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
  点击这里找小助理0元领取: https://s.pdb2.com/l/cnklSITCGo24eIn
  3.3 新建表格create table 表名(字段名1 字段类型1,字段名2 字段类型2,字段名3 字段类型3,...); 比如: //创建一个stutbl的表,表中有3个字段 //分别是整数类型的学号id,字符串类型的name和整数类型的age create table zhiguoxin(id int,name char[20],age int); //不存在则创建 create table if not exists zhiguoxin(id int,name char[20],age int); //如果希望表中某个字段的内容不重复,可以用unique修饰该字段 create table if not exists zhiguoxin(id int unique,name char[20],age int);
  3.4 删除表格 drop table 表名;
  //drop table zhiguoxin;
  3.5 往表格中插入数据insert into 表名 values(字段值  1  ,字段值2  ,字段值3  ,....);
  //字段值如果是字符串,必须用""(单引号)括起来
  比如:
  insert into zhiguoxin values(1001  ,"刘尧"  ,18  );
  insert into zhiguoxin values(1002  ,"聂衍文"  ,19  );
  insert into zhiguoxin values(1003  ,"杨佳晨"  ,20  );
  insert into zhiguoxin values(1004  ,"冯华阳"  ,21  );
  完成插入之后,zhiguoxin 的表格内容如下:
  idnameage  1001刘尧18 1002聂衍文19  1003杨佳晨20 1004冯华阳21  3.6 查询表中的数据
  //查询表中的所有数据 select * from 表名; //select * from zhiguoxin;
  3.7 查看数据库
  可以把first.db数据库文件拷贝至windows下,使用SQLite Developer打开即可看到。SQLite Developer下载地址 https://mydown.yesky.com/pcsoft/443425.html
  3.8 按条件查找
  1.使用where指定查询条件 select * from zhiguoxin where id=1003;//查询id值为1003的条目 select * from zhiguoxin where age>=19 and age<21; select * from zhiguoxin where age>=19 or age<21;
  2.指定查询的字段 select id,name,age from zhiguoxin;//只查询id,name,age的字段
  3.使用where+like实现模糊查询 select * from zhiguoxin where name like "刘%";//查找名字以刘开头的条目
  4.使用order by实现查询结果按某个字段的值升序/降序输出 select * from zhiguoxin order by age desc;//按年龄降序排序      select * from zhiguoxin order by id asc;  //按id升序排序
  3.9 删除表中的条目 delete from 表名   where   条件;//删除所有符合条件的条目
  比如:
  delete from zhiguoxin where   id=1001;
  3.10 更新(修改)表中的条目 update 表名   set   字段名1=字段值1,字段名2=字段值2... where   条件;//修改符合条件的条目
  比如:
  update zhiguoxin set   age=100 where   id=1002;
  3.11 SQLite中字段类型
  数字: int ------- 整型 smallint ---- 短整型 tinyint ----- 微型整数(0~255) bit --------- 0 or 1 float ------ 单精度浮点型 real ------- 双精度浮点型
  字符串: char ---------- 非unicode定长字符串 < 8000 varchar ------- 非unicode变长字符串 < 8000 text ---------- 非unicode变长字符串 < 2^32-1 nchar ---------- unicode定长字符串 < 8000 nvarchar ------- unicode变长字符串 < 8000 ntext ---------- unicode变长字符串 < 2^32-1 四、SQLite的C语言访问接口
  sqlite本身自带C语言访问接口,在C语言的环境下可以直接使用,使用这些接口的代码需要 sqlite的源码编译进可执行程序 或者 编译时链接sqlite的库。 4.1 打开 sqlite3_openint sqlite3_open(   const char *filename,   /* 数据库的文件路径 */   sqlite3 **ppDb          /* 输出参数:传出代表打开数据库的句柄 */ ); //成功返回SQLITE_OK,否则打开失败char ---------- 非unicode定长字符串 < 8000 varchar :非unicode变长字符串 < 8000 text :非unicode变长字符串 < 2^32-1 nchar:unicode定长字符串 < 8000 nvarchar : unicode变长字符串 < 8000 ntext :unicode变长字符串 < 2^32-1 4.2 关闭 sqlite3_closeint sqlite3_close(sqlite3 *pDb); //传入要关闭的数据库的句柄 4.3 编译方法1.直接编译源码 gcc sqlite3.c sqlite_test.c -pthread -ldl -o sqlite_test 2.链接sqlite3的动态库 gcc sqlite_test.c -pthread -ldl -lsqlite3 -L /home/gec/sqlite/lib -o sqlite_test   //如果运行时找不到sqlite3的库,可以将编译出来的库文件拷贝到/usr/lib目录下(cp -r)       4.4 执行SQL语句的接口 sqlite3_execint sqlite3_exec(   sqlite3 *pDb,                              /* 打开的数据库的句柄 */   const char *sql,                           /* 要执行的SQL语句 */   int (*callback)(void *arg,int col,char **str,char **name),     /* 回调函数,处理SQL语句执行返回的结果(查询),一条结果调用一次        arg - exec的第四个参数       col - 本条结果的字段数       str - 记录字段值的数组       name - 记录字段名的数组      回调函数必须返回SQLITE_OK */   void *arg,                                 /* 传递给回调函数的第一个参数 */   char **errmsg                              /* 错误信息 */ ); //成功返回SQLITE_OK,否则执行失败 几个例子//连接数据库 int Connection_Sqlite3DataBase() {     rc = sqlite3_open("./face_database/face.db", &db);     if (rc != SQLITE_OK)     {         fprintf(stderr, "Can"t open database: %s ", sqlite3_errmsg(db));         sqlite3_close(db);         exit(1);     }     else         printf("You have opened a sqlite3 database named bind.db successfully! Congratulation! Have fun! ");     return 0; } //将图片插入到数据库 void insert_face_data_toDataBase(const char *name, MByte *face_feature, MInt32 featureSize) {     sqlite3_prepare(db, "insert into face_data_table(name,face_feature,feature_size) values (?,?,?);", -1, &stmt, NULL);     sqlite3_bind_text(stmt, 1, name, strlen(name), NULL);     sqlite3_bind_blob(stmt, 2, face_feature, featureSize, NULL);     sqlite3_bind_int(stmt, 3, featureSize);     sqlite3_step(stmt); }
  原文链接:https://mp.weixin.qq.com/s/xPICKBDMWN-9dOimDCwzIw
  转载自:果果小师弟
  原文链接:手把手教你在嵌入式设备中使用SQLite3
  本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

这座少有人知的川北小镇,我看到了时光的尽头如果历史见证了一个地区的记忆,那么文化就是这一方水土的灵魂,而历史和文化的相融,就碰撞出灿若星河的集镇。在四川,保存至今的古镇虽然也不少,但是算得上有名的并不多,而在川北巴中,最有跟着五行游红河来源云南日报五行,即金木水火土,在中国古人看来,这五种元素充盈在天地之间,无所不在,它们相互作用相互发展,维系着自然的平衡。(以下图片请横屏观看)(建水紫陶文房四宝)今天,文旅君带北国记风,比什凯克的商场作者松寿君怡第五站五十一hr比什凯克的大商场与古董摊比什凯克的特色产品商场其实并不大,但在比什凯克也算很有名气了,因为到过比什凯克的人,都会愿意到这里购买一些当地特色产品,且这里据踏迹寻音冬天,去四川阿坝也不错10月31日,阿坝州发布冬游优惠公告,2022年11月1日至2023年3月31日,阿坝州国有4A级及以上旅游景区实行全价门票买一送一,国有4A级以下旅游景区门票全免。(文化是闲出来当你了解欧洲罗斯柴尔德家族的存在以后,你才明白犹太人的黑幕绝大多数人对犹太人罗斯柴尔德家族的了解都源自一本叫货币战争的书,在看完这本书以后,许多人觉得这书的内容没有考证,很多地方过于夸张,不真实。这种想法一半错,一半对,首先我对这本书的看成功立国土耳其的逆袭1923年10月29日,土耳其独立战争胜利,凯末尔建立了土耳其共和国。这场独立战争持续了五年,由凯末尔领导的土耳其新政府,击退协约国的希腊军队获胜。这场战争的胜利至关重要,如同日本吸血欧洲,美国GDP增长2。6背后本报记者倪浩本报驻德国特约记者青木据法新社报道,美国总统拜登周一(10月31日)晚警告称,如果美国油企不将其高额利润反哺到增产降价中,他将向其征收暴利税。多家全球能源巨头刚公布的新去芬兰旅行,入住酒店为何会有美女敲门?过来人其目的很强每年都有大部分人会选择花费一些时间与金钱在游玩上,毕竟各种娱乐的项目确实能够带给人放松的机会,尤其是现在去国外旅游已经成为了一种新的潮流。现在人们的收入水平有所增长,去国外旅游也成华为起诉美国企业专利侵权,中国电子科技产业在专利围猎中觉醒文金石近日,细心网友发现华为公司新增了一条开庭公告,案由是侵害发明专利权纠纷,被告为美国亚马逊公司。国外公司向中国科技公司挥舞专利大棒的新闻不绝于耳,可如今,中国企业似乎已经有实力人这一生,失去了这几样东西,活着就没有意义了01hr余华在活着里写道检验一个人的标准,就是看他把时间放在了哪儿。别自欺欺人,当生命走到尽头,只有时间不会撒谎。社会上,有人从容走路,有人忙忙碌碌,有人积极奋斗,有人听之任之世人中国最后一个藩属国数百年不离不弃,至今仍然支持中国中国有两万多公里的海岸线,海防向来是关系到我们国家安危的重中之重。克什米尔高原上的古老地区在陆地边境上,北边在中国和俄罗斯这两个大国之间,有外蒙古这个缓冲带,而西边的格局则比较混乱
忆往昔曾多次听人提起过,总是回忆过去,怀念过去,那便是年岁渐长的特点了。是了,最近总是在记起小时候,小学初中高中大学,以及刚刚参加工作的时候能想要有个小叮当时光机能够带我回到过去,哪怕只CBA排名大变天!浙辽领跑疆鲁进八强,广东倒数第二上海令人失望目前CBA常规赛已经进行了三轮的比赛,而在积分榜也呈现出了不一样的局面。尤其是在昨天进行完的6场比赛之后,也让整个排名出现了大变天的情况。昨天的6场比赛分别是天津队10276大胜宁散文谎言骗谎言1985年我刚从师范毕业,分配在义乌一所乡校任教,教学没碰到过多大的困难,班务上却碰到过一桩小事。有一天课间,我正在办公室休息,突然,班长跑来汇报说,有个同学少了一元钱,可能是同桌英超最新积分榜曼城输给利物浦遭首败,阿森纳客胜4分领跑昨晚今晨,英超联赛第11轮激战多场,利物浦主场10击败曼城,升至积分榜第8位,萨拉赫破门建功,曼城遭到首败阿森纳客场10击败利兹联,4分优势领跑积分榜,萨卡打进唯一入球,班福德失点今日美文从心里走过第一次感受到文字的神奇,是在少年时代。记得是12岁那年的夏天,有一天我突然很想去游泳,可是妈妈规定不能一个人去,要有伴儿。去约我们班一个女生偏偏不在家,她妈妈告诉我,她下午要去舅舅都是成年人了,爱与被爱你选哪个?童稚之爱的原则是因为我爱,所以我爱。成熟之爱的原则是因为我爱,所以我被爱。(美)弗罗小石头有一天觉得很迷茫,就去问佛。石头问我究竟应该找个我爱的人做我的妻子呢?还是应该找个爱我的人CBA前3轮积分榜!2队保持全胜,广东队倒数第二,上海队倒数第三CBA3轮过后,只有2支球队保持全胜202223赛季CBA常规赛,目前已经打完了3轮比赛,从这3轮比赛来看,可以说这个赛季CBA联赛打得非常激烈,仅仅打了3轮比赛,能够保持全胜的球CBA罕见1幕!球员在冠军教练面前爆粗口怒摔毛巾场面太火爆上海队遭到本赛季最惨痛的失利昨晚,CBA常规赛第三轮,上海队与浙江队的比赛,结果,上海队以88121输给了浙江队33分,是的,你没有看错,作为CBA本赛季拥有3个外援的球队,作为争滕哈赫对裁判的执法表现没啥可说的,大家都看到了直播吧10月17日讯昨夜,曼联在英超联赛中00战平纽卡斯尔,赛后滕哈赫接受了媒体采访。滕哈赫说道我对结果感到失望,但对球队表现感到满意。我们把逼抢做得很好,我们让他们跑了起来。纽卡拜登称美国不会出现经济衰退,但又称可能会轻微衰退据国会山报11日报道,美国总统拜登当地时间周二晚上重申,他认为美国不会出现衰退,但同时又表示可能会出现轻微衰退。当地时间11日,国际货币基金组织将美国2022年经济增长预期从7月预贵州茅台2022年19月预计实现净利润约443。99亿元北京商报讯(记者翟枫瑞)10月12日晚间,贵州茅台酒股份有限公司(以下简称贵州茅台)发布2022年1至9月主要经营数据公告。据公告显示,经贵州茅台初步核算,2022年19月,贵州茅