




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学*兰州理工大学计算机与通信学院2015年春季学期嵌入式系统开发课程设计题目:基于嵌入式Linux系统的图书信息查询数据库的应用设计专业班级:xxxx工程12级x班姓名:xxxxx学号:122x0xxx指导教师:xxxxxx成绩:嵌入式系统开发课程设计目录摘要2前言3一、基本原理41.1 开发环境搭建41.2 应用程序的编写5二、系统分析62.1 需求分析62.2 控制台72.3 添加图书信息72.4 删除图书信息82.5 查看图书信息92.5.1 索书号查找92.5.2 图书名查找102.6 帮助系统102.7 退出系统11三、详细设计123.1 main.c源码123.2 cons
2、oleshell.c源码123.3 SQLite.c源程序143.4 编译源程序223.5 NFS挂载实验目录测试23运彳丁结果25参考文献27总结283摘要随着社会的进步,如今书店图书数量巨大,每天都有大量的图书售出,在如此多的书中查找到自己想要的书采用计算机图书信息查询系统较为快捷,基于嵌入式Linux系统的图书信息查询数据库的应用是在嵌入式数据库Sqlite的基础上,采用C语言编程及SqliteC接口来控制数据库Sqlite的读取和存储,使用C语言编写的人机交互界面使得普通人能够很轻松的对图书信息查询应用进行操作,使得添加、修改、查找和删除图书信息方便快捷。关键词:图书信息嵌入式Linu
3、xSqliteC语言刖百目前各大书店存书量巨大,对于在如此大量的图书中查找到顾客所需的图书,普遍采用计算机软件结合数据库的图书信息查询系统来查找图书信息。数据库的目标是实现对数据的存储、检索等功能。传统的数据库产品除提供了基本的查询、添加、删除等功能外,也提供了很多高级特性,如触发器、存储过程、数据备份恢复等。但实际上用到这些高级功能的时候并不多,应用中频繁用到的还是数据库的基本功能。于是,在一些特殊的应用场合,传统的数据库就显得过于臃月中了。在这种情况下,嵌入式数据库开始崭露头角。嵌入式数据库是一种具备了基本数据库特性的数据文件,它与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传
4、统数据库则采用引擎响应方式驱动。嵌入式数据库的体积通常都很小,这使得嵌入式数据库常常应用在移动设备上。由于性能卓越,所以在高性能的应用上也经常见到嵌入式数据库的身影。SQLite是一种采用C语言开发的嵌入式数据库。SQLite的目标是尽量简单,因此它抛弃了传统企业级数据库的种种复杂特性,只实现那些对于数据库而言非常必要的功能。尽管简单性是SQLite追求的首要目标,但是其功能和性能都非常出色。通过C语言函数编写的人机交互界面,人工输入所有图书信息,再进行保存,也可以通过图书信息查询系统快速查找到相关图书的信息,对图书信息的修改和删除也非常的方便。、基本原理1.1开发环境搭建进行嵌入式系统开发之
5、前需要搭建开发环境,所需要的硬件有UP-CUP210-II型嵌入式实验平台,PC机Pentium500以上,硬盘40G以上,内存大于256M软件部分有VmwareWorkstation+FedoraCore14+MiniCom/Xshell+ARM-LINUX交叉编译开发环境。准备好硬件后,使用用口线和网线连接UP-CUP210-II型嵌入式实验平台和计算机,并将UP-CUP210-II型嵌入式实验平台接通电源。1、打开虚拟机启动FedoraCore14,点击【编辑】一【虚拟网络编辑器】,在【桥接到:】后选择【RealtekPCIeGBEFamilyController这一项。然后点击【系统】
6、一【管理】一【网络】一【设备】一【硬件设备】,在【硬件设备】中选择【eth2()这一项,再点击【探测】,最后点击【确定】退出,在重新打开查看eth2是否处于活跃状态。处于活跃状态是正常状态,若不是就重复以上步骤知道eth2处于活跃状态。2、在电脑上安装“超级终端”,安装成功后点击【文件】一【新建连接】,进入属性界面后把端口选为COM,1波特率选为115200,数据位选为8,校验位选为None,停止位选为1,流控选为None,点击【确定】退出。打开UP-CUP210-II实验板电源,待超级终端上显示完毕后输入命令"ifconfig”查看IP地址,输入命令"ifconfiget
7、h0192.168.160.150”对刚刚查到的IP地址修改为192.168.160.150。再输入“ifconfig”检查IP地址是否修改成功。使用命令"ping192.168.160.150”查看实验平台与计算机是否能够通信。3、进入虚拟机终端,输入命令"suroot”切换到root用户,输入密码“123456”,然后输入命令"setup”弹出对话框,选择【防火墙配置】后选择不启用防火墙。然后进入【系统服务】,选择不启用ip6tables和iptables,启用network和nfs。退出对话框后输入命令"servicenetworkrestart”
8、重启网络,每行末都显示确定后输入命令【servicenfsrestart重启网络文件系统。待每行末都显示确定后输入命令“vi/etc/exports”弹出文件编辑器,把第一行改为“/UP-CUP210-II192.168.160.*(rw,async,no_root_squash)”,保存并退出。4、在超级终端中输入命令"mountnfs192.168.160.130:/UP-CUP210-II/mnt/nfs”挂载。挂载成功后使用命令“cd”和“ls”进入文件夹“05_sqlite”中,输入命令7嵌入式系统开发课程设计”./SQLite_test”执行程序。程序的运行结果会显示到超
9、级终端。1.2应用程序的编写进入实验目录,输入命令"cd/UP-CUP210-II/SRC/exp/basic/05_sqlite/”,冉输入“ls”查看文件夹“05_sqlite”中的所有文件和文件夹,在文件夹“05_sqlite”中存在三个C文件,分别为SQLite.c、consoleshell.c、main.c。为了方便快速的编写程序,只需将以上三个C文件进行修改即可,修改好后仔细检查并保存退出。因修改后的代码没用经过编译,在超级终端执行的文件还是原来的文件,所以要在虚拟机终端中输入命令"makeclean”清除中间代码,重新编译。然后再输入命令"mak3&
10、#39;编译。编译成功后进入超级终端执行修改后的程序,修改后的程序执行结果显示到超级终端。根据这个原理我们可以对程序进行反复修改,反复在超级终端上测设,最终达到理想的结果。二、系统分析2.1 需求分析如今遍布全国大大小小的书店数量巨大,每天都有大量的书籍交易,在一些知名的书店每日销售量惊人,如果书店把图书信息记录到纸质表格中,当遇到大量顾客购书时需要人工查找到图书信息,显然浪费了大量时间,效率低下,严重影响销售额。所以要提高查询图书信息的效率就必须的采用运行速度高的计算机系统。当顾客买书时一般都是提供书籍名称,店员通过图书信息查询数据库的应用系统输入书籍名称就能很快的查出书籍的索书号和价格,书
11、店的书都是分区分类摆放的,而且是大区里又分出了很多个小区,每个大区都由不同的数字表示,每个大区里面的小区也是由不同的数字表示,每种图书也由数字表示,这种形式就是树状结构,可以通过一级一级的查找到相应图书,由每种图书的代表数字和上一级区的数字组合就形成了索书号,索书号形如学号,例如兰州理工大学学生学号”12250135',“12”代表2012级的所有学生,“25”代表通信工程的所有学生,“01”代表通信工程一班,“35”就代表某个学生自己。通过学号从前往后就能知道某学生所属的班级。索书号也是如此,通过索书号也能查到图书在书店的具体位置。所以索书号是图书信息查询数据库的应用系统中必不可少的
12、一个信息项。当人们购买图书是还会考虑到图书的价格,如果价格合适才会去购买。所以图书价格也是图书信息查询数据库的应用系统中必不可少的一个信息项,图书信息查询数据库的应用系统需要根据图书名称查找图书信息,所以图书名称更是图书信息查询数据库的应用系统中必须的一个信息项。总体来说图书信息查询数据库的应用系统的数据库中要包括索书号、图书名称和图书价格这三类信息,为了方便人工操作需要有一个简单的人机交互界面一一控制台,交互界面菜单应包括添加、删除、查看、帮助和退出功能。嵌入式系统开发课程设计图2.1软件结构图2.2 控制台控制台是计算机与人之间交互的一个平台,里面含有若干选项,通过点击这些选项就能进入到相
13、应的功能项下,控制台是图书信息查询数据库的应用系统中重要的组成部分。包含“查看所有图书信息”、“根据图书名查找图书”、“根据索书号查找图书”、“添加图书信息”、“删除图书信息”、“帮助”和“退出”这几个选项。由于选项信息太长,才用输入简短指令的方法选取选项最为方便快捷。所以这里以“1”、“2”、“3”、“4”、“5”、“*”和“0”分别作为这几个选项的命令。2.3 添加图书信息嵌入式系统开发课程设计图2.2添加图书信息程序流程图刚刚建立的图书信息查询数据库的应用系统数据库为空,第一步通过人工输入图书信息,输入顺序是先索书号,然后是图书名,最后是图书价格,每一项输入结束后会自动进入下一项输入,当
14、三项都输入完毕后自动进入控制台。当输入回车键输入结束。2.4 删除图书信息当书店里的某些图书下架了,这些图书信息在图书信息查询数据库的应用系统的数据库中也没有用处了,所以得删除这些被下架的图书信息。删除图书信息时要根据图书名查找到图书,若图书不存在则回到控制台,若图书存在则询问是否要删除,经过用户确认后方可删除相应图书信息。Y图2.3删除图书信息程序流程图2.5 查看图书信息查看图书信息分为三种:查看所有图书信息、根据图书名查找图书信息、根据索书号查找图书信息。查看所有图书信息时输入“1”命令则显示数据库中所有的图书信息实现较为简单。2.5.1 索书号查找图2.4索书号查找程序流程图根据索书号
15、查找图书时,首先要输入索书号,若索书号输入完毕,则进行数据库查询,若相关图书不存在则返回控制台,若存在则显示相关图书信息。2.5.2 图书名查找图2.5图书名查找程序流程图根据图书名查找图书时,首先要输入图书名,若图书名输入完毕,则进行数据库查询,若相关图书不存在则返回控制台,若存在则显示相关图书信息。2.6 帮助系统帮助系统是任何一个计算机系统所必须的一部分,主要作用是引导和帮助用户了解系统的功能和操作方法。图书信息查询数据库的应用系统的帮助系统主要用来向用户说明“1”、“2”、“3”、“4”、“5"、“*”和“0”这几个命令的作用,了解了各个命令的作用后用户才能熟练的操作图书信息
16、查询数据库的应用系统。11嵌入式系统开发课程设计2.7 退出系统在每一个计算机系统中都要有退出选项,如果在不使用应用程序时不退出程序容易浪费系统资源。再运行其他程序时,系统负荷增大,导致运行速度变慢。功耗增大,耗电量也增大。在嵌入式设计中如果不设计退出选项,就无法输入其他选项,所以退出系统程序是必不可少的。ii嵌入式系统开发课程设计三、详细设计3.1 main.c源码#include"consoleshell.h"#include"linuxpatch.h"intmain(intargc,char*argv)consoleshell();return0;
17、3.2 consoleshell.c源码consoleshell.c源文件主要是建立用户终端显示控制台菜单,并根据用户的输入字符,调用相应的接口函数。#include"consoleshell.h"charshell_s="nshell>"voidget_line(char*cmd);/*控制台*/void*consoleshell()intcount=0;inti;charcmd256=0,;intrc=sqliteDB_open();charname40,id40;intprice=0;/demo中只做整型的,浮点型的转换可以参考网上实现pri
18、ntf("n<DBcontrolshell>");printf("n1查看所有图书信息")printf("n2根据书名查找图书")printf("n3根据书号查找图书")printf("n4删除图书信息)printf("n5添加图书信息)printf("n*帮助)printf("n0退出)while(1)printf(shell_s);fflush(stdout);get_line(cmd);if(strncmp('T,cmd,1)=0)sqliteDB_
19、opt_select_all();elseif(strncmp("2",cmd,1)=0)printf("n输入图书名");printf("n图书名:");scanf("%s",name);fflush(stdin);刷新缓冲区if(!sqliteDB_exist(name)continue;sqliteDB_opt_select(name);elseif(strncmp("3",cmd,1)=0)printf("n输入索书号");printf("n索书号:&quo
20、t;);scanf("%s",id);fflush(stdin);刷新缓冲区sqliteDB_opt_select_by_id(id);elseif(strncmp("4",cmd,1)=0)printf("n请输入将要删除的图书名”);printf("n图书名:");scanf("%s",name);fflush(stdin);刷新缓冲区if(!sqliteDB_exist(name)continue;sqliteDB_opt_select(name);/删除之前应再次询问是否删除,不可回滚sqlite
21、DB_opt_delete(name);elseif(strncmp("5",cmd,1)=0)printf("n请输入将要添加的图书信息!n索书号:");printf("n输入图书索书号");printf("n索书号:");scanf("%s",id);printf("n图书名:");scanf("%s",name);fflush(stdin);刷新缓冲区printf("n价格:");scanf("%d”,&pric
22、e);fflush(stdin);刷新缓冲区sqliteDB_opt_add(name,id,price);elseif(strncmp("*",cmd,2)=0)printf("n<DBcontrolshell>");printf("n1查看所有图书信息)printf("n2根据书名查找图书");printf("n3根据书号查找图书");printf("n4删除图书信息)printf("n5添加图书信息)printf("n*帮助)printf("n0退
23、出)elseif(strncmp("0",cmd,1)=0)sqliteDB_close();/关闭数加库连接break;/elseif(cmd0!="0")elseif(strncmp("0",cmd,1)!=0)system(cmd);voidget_line(char*cmd)inti=0;while(1)cmdi=getchar();if(cmdi=10)cmdi=0;break;fflush(stdout);i+;3.3SQLite.c源程序该源码文件主要是对SQLite数据的C/C+银口封装,提供consoleshell.
24、c中程序调用。#include"SQLite.h"/* *authe门yj_uptech* *date2007-3-21* *本程序提供了对数据库进行操作的基本接口,对于更复杂的操作,用户可以根据具体情况* *进行修改,程序的更新,以及其他需求请联系本人或者技术支持* *例如关于主键的唯一性。用户可以适当添加功能;* *对于可以访问所有table的动态sql语句可以参考其中的程序实现;*/sqlite3*db;/全局的数据连接/用户第一次打开数据库时应创建对应的table并添加适当的数据记录staticintcallback(void*NotUsed,intargc,cha
25、r*argv,char*azColName);/*建立与数据库的连接*/intsqliteDB_open()intrc;/操作标志printf("ncreatdatabase:test.dbnncreattable:tablemerchandise(contents:idnameprice)nnandaddtworecordsn");rc=sqlite3_open("test.db",&db);if(rc)fprintf(stderr,"不能打开数据库:%sn",sqlite3_errmsg(db);sqlite3_close
26、(db);exit;printf("n打开成功!");if(!sqliteDB_create_table()printf("n数据表存在");/*if(!sqliteDB_insert_records()printf("n进入数据表失败");elsesqliteDB_opt_select_all();*/return1;/* 关闭与数据库的连接* /intsqliteDB_close()if(db!=0)sqlite3_close(db);* 添加一条记录到已知或未知数据库表* /intsqliteDB_opt_add(char*na
27、me,char*id,intprice)intrc;char*zErrMsg=0;char*sql=0;/动态生成的SQL语句chartem_sql256="insertintomerchandisevalues('"/bysprifeformemoutchartem_sql05="','"chartem_sql15="',"chartem_sql25=");"chartem_price20;sprintf(tem_price,"%d",price);将int数据
28、转换为字符串sql=strcat(tem_sql,name);sql=strcat(sql,tem_sql0);sql=strcat(sql,id);sql=strcat(sql,tem_sql1);sql=strcat(sql,tem_price);sql=strcat(sql,tem_sql2);/printf("n#");/printf("n%s",sql);/printf("n#");rc=sqlite3_exec(db,sql,callback,0,&zErrMsg);/printf("nrc=%d&quo
29、t;,rc);if(rc!=SQLITE_OK)fprintf(stderr,"SQLerror:%sn",zErrMsg);sqlite3_free(zErrMsg);./* 删除表中的一条记录* paramname*/intsqliteDB_opt_delete(char*name)intrc;charn4;char*zErrMsg=0;char*sql=0;/动态生成的SQL语句chartem_sql256="deletefrommerchandisewherename='"/chartem_sql03=""'c
30、hartem_sql13=""/删除之前查询该条记录,如存在则显示该记录,并询问是否真的要删除/如不存在则推出本次操作sql=strcat(tem_sql,name);sql=strcat(sql,tem_sql0);sql=strcat(sql,tem_sql1);/printf("n#");/printf("n%s",sql);/printf("n#");rc=sqlite3_exec(db,sql,callback,0,&zErrMsg);/printf("nrc=%d",rc);
31、if(rc!=SQLITE_OK)fprintf(stderr,"SQLerror:%sn",zErrMsg);sqlite3_free(zErrMsg);./*删除表中的一条记录*paramid*/intsqliteDB_opt_delete_by_id(char*id)intrc;charn4;char*zErrMsg=0;char*sql=0;/动态生成的SQL语句chartem_sql256="deletefrommerchandisewhereid='"/chartem_sql03=""'chartem_sq
32、l13=""/删除之前查询该条记录,如存在则显示该记录,并询问是否真的要删除/如不存在则推出本次操作sql=strcat(tem_sql,id);sql=strcat(sql,tem_sql0);sql=strcat(sql,tem_sql1);/printf("n#");/printf("n%s",sql);/printf("n#");rc=sqlite3_exec(db,sql,callback,0,&zErrMsg);/printf("nrc=%d",rc);if(rc!=SQLI
33、TE_OK)fprintf(stderr,"SQLerror:%sn",zErrMsg);sqlite3_free(zErrMsg);/*/*修改数据库表中的记录内容/暂不提供修改函数2007-3-21*/intsqliteDB_opt_modify();/*用预编译的sql语句减少sql语句的分析时间* 只举例查询语句*2007-3-22* 查询语句* /intsqliteDB_opt_select_all()sqlite3_stmt*stmt=NULL;char*zErrMsg=NULL;char*name,*id;intprice=0;intnret=sqlite3_
34、prepare(db,"SELECT*FROMmerchandise;",strlen("SELECT*FROMmerchandise;"),&stmt,(constchar*)(&zErrMsg);if(nret!=SQLITE_OK)returnfalse;printf("nt图书名tt索书号tt价格n");printf("tn");while(1)nret=sqlite3_step(stmt);if(nret!=SQLITE_ROW)break;name=sqlite3_column_text
35、(stmt,0);id=sqlite3_column_text(stmt,1);price=sqlite3_column_int(stmt,2);printf("t%stt%stt%dn",name,id,price);sqlite3_finalize(stmt);printf("n");returntrue;/*查询符合查询条件的记录*paramname*/intsqliteDB_opt_select(char*name)sqlite3_stmt*stmt=NULL;char*zErrMsg=NULL;char*_name,*_id;intprice=
36、0;intnret=0;intrc;char*sql=0;/动态生成的SQL语句chartem_sql256="select*frommerchandisewherename='"/chartem_sql03=""'chartem_sql13=""sql=strcat(tem_sql,name);sql=strcat(sql,tem_sql0);sql=strcat(sql,tem_sql1);/printf("n#");/printf("n%s",sql);/printf(&q
37、uot;n#");nret=sqlite3_prepare(db,sql,strlen(sql),&stmt,(constchar*)(&zErrMsg);if(nret!=SQLITE_OK)returnfalse;printf("nt图书名tt索书号tt价格n");printf("tn");while(1)nret=sqlite3_step(stmt);if(nret!=SQLITE_ROW)break;_name=sqlite3_column_text(stmt,0);_id=sqlite3_column_text(stm
38、t,1);price=sqlite3_column_int(stmt,2);printf("t%stt%stt%dn",_name,_id,price);一一sqlite3_finalize(stmt);printf("n");returntrue;/*查询符合查询条件的记录*paramid*/intsqliteDB_opt_select_by_id(char*id)sqlite3_stmt*stmt=NULL;char*zErrMsg=NULL;char*_name,*_id;intprice=0;intnret=0;intrc;char*sql=0;
39、/动态生成的SQL语句chartem_sql256="select*frommerchandisewhereid='"/chartem_sql03=""'chartem_sql13=""sql=strcat(tem_sql,id);sql=strcat(sql,tem_sql0);sql=strcat(sql,tem_sql1);/printf("n#");/printf("n%s",sql);/printf("n#");nret=sqlite3_prepar
40、e(db,sql,strlen(sql),&stmt,(constchar*)(&zErrMsg);if(nret!=SQLITE_OK)returnfalse;printf("nt图书名tt索书号tt价格n");printf("tn");while(1)nret=sqlite3_step(stmt);if(nret!=SQLITE_ROW)break;_name=sqlite3_column_text(stmt,0);_id=sqlite3_column_text(stmt,1);price=sqlite3_column_int(stm
41、t,2);printf("t%stt%stt%dn",_name,_id,price);一一sqlite3_finalize(stmt);printf("n");returntrue;/*内部调用函数*/staticintcallback(void*NotUsed,intargc,char*argv,char*azColName)inti;for(i=0;i<argc;i+)printf("%s=%sn",azColNamei,argvi?argvi:"NULL");printf("n")
42、;return0;/*内部调用函数*功能判断所查询的记录是否存在*依据:图书名*/intsqliteDB_exist(char*name)sqlite3_stmt*stmt=NULL;char*zErrMsg=NULL;char*_name;intprice=0;intnret=0;intrc;char*sql=0;/动态生成的SQL语句chartem_sql256="select*frommerchandisewherename='"/chartem_sql03=""'chartem_sql13=""sql=strc
43、at(tem_sql,name);sql=strcat(sql,tem_sql0);sql=strcat(sql,tem_sql1);nret=sqlite3_prepare(db,sql,strlen(sql),&stmt,(constchar*)(&zErrMsg);printf("sql:%s",sql);if(nret!=SQLITE_OK)returnfalse;nret=sqlite3_step(stmt);if(nret!=SQLITE_ROW)printf("n卤书不存在!");returnfalse;sqlite3_fi
44、nalize(stmt);returntrue;/*在用户还没有创建table时可用该函数创建一个table*/intsqliteDB_create_table()char*zErrMsg=NULL;charsql256="CREATETABLEmerchandise(namevarchar(40),idvarchar(40),pricesmallint);"intnret=sqlite3_exec(db,sql,NULL,NULL,&zErrMsg);if(nret!=SQLITE_OK)printf("%sn",sqlite3_errmsg(
45、db);returnfalse;elsereturntrue;/*初始化数据库table时预插入两条数据*/intsqliteDB_insert_records()一一char*zErrMsg=NULL;charsql1256="INSERTINTOmerchandiseVALUES('ibm','277325073',483);"charsql2256="INSERTINTOmerchandiseVALUES('sun','433443',400);"intnret=sqlite3_exe
46、c(db,sql1,NULL,NULL,&zErrMsg);nret=sqlite3_exec(db,sql2,NULL,NULL,&zErrMsg);if(nret!=SQLITE_OK)printf("%sn",sqlite3_errmsg(db);returnfalse;elsereturntrue;3.4 编译源程序rootlocalhost /#rootlocalhost 05_sqlite# MakefileSQLite.cmain.o sqlite Rules.makSQLite.hreadme.txt rootlocalhost 05_sql
47、ite#1、进入实验目录:cd/UP-CUP210-II/SRC/exp/basic/05_sqlite/lsSQLite.oconsoleshell.hlinuxpatch.hconsoleshell.cconsoleshell.omain.c2、清除中间代码,重新编译rootlocalhost05_sqlite#makeclean*.gdb *.orm-f./SQLite_test./sqlite/SQLite_test*.elf*.elf2fltrootlocalhost05_sqlite#makearm-linux-gcc-c-omain.omain.cSQLite.c:184:war
48、ning:assignmentdiscardsqualifiersfrompointertargettypeSQLite.c:185:warning:assignmentdiscardsqualifiersfrompointertargettypeSQLite.c:Infunction'sqliteDB_opt_select':SQLite.c:226:warning:assignmentdiscardsqualifiersfrompointertargettypeSQLite.c:227:warning:assignmentdiscardsqualifiersfrompoin
49、tertargettypeSQLite.c:Infunction'sqliteDB_opt_select_by_id':SQLite.c:268:warning:assignmentdiscardsqualifiersfrompointertargettypeSQLite.c:269:warning:assignmentdiscardsqualifiersfrompointertargettypearm-linux-gcc-c-oconsoleshell.oconsoleshell.carm-linux-gcc-static-I./sqlite/-L./sqlite/-oSQL
50、ite_testmain.oSQLite.oconsoleshell.o-lsqlite3arm-linux-gcc-static-I./sqlite/-L./sqlite/arm-linux-gcc-c-oSQLite.oSQLite.cSQLite.c:Infunction'sqliteDB_opt_select_all':sqlite/SQLite_testmain.oSQLite.oconsoleshell.o-lsqlite3orootlocalhost 05_sqlite# Makefile SQLite.c main.c readme.txt Rules.mak
51、SQLite.h main.o sqlite rootlocalhost 05_sqlite#ls SQLite.o consoleshell.cSQLite_test consoleshell.hconsoleshell.olinuxpatch.h当前目录下生成可执行程序SQLite_test3.5 NFS挂载实验目录测试1、启动UP-CUP210-II型实验系统,连好网线、用口线。通过串口终端挂载宿主机实验目录。rootUP-TECHyaffs#mountnfs192.168.12.157:/UP-CUP210-II/mnt/nfs/2、进入串口终端的NFS#享实验目录rootUP-TEC
52、Hyaffs#cd/mnt/nfs/SRC/exp/basic/05_sqlite/rootUP-TECH05_sqlite#lsMakefileSQLite.oconsoleshell.oreadme.txtRules.makSQLite_testlinuxpatch.hsqliteSQLite.cconsoleshell.cmain.cSQLite.hconsoleshell.hmain.orootUP-TECH05_sqlite#3、执行程序。rootUP-TECH05_sqlite#./SQLite_test此时会在当前目录下创建数据库test.db文件,用户可以根据终端菜单来对此数据库进行操作了,同样可以使用ls-l'命令观察数据库大小的变化27运行结果系统运行结果如下所示:1、控制台rootUP-TECH05_sqlite#./SQLite_testcreatda
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省鞍山市2024-2025学年高三下学期第一次月考语文试题(解析版)
- 混合式教学模式在高职英语中的应用研究
- 梵高经典画作欣赏
- 自然拼读法在初一英语词汇教学中的应用研究
- 2024年CFA考试体验试题及答案
- 科室仪器管理规范
- CFA考试研究内容试题及答案
- 学习CFA的最佳方法与试题及答案
- 综合能力提升CFA试题及答案
- 2024年特许金融分析师考试成功之道试题及答案
- 富源县中劲鸿泰贸易有限公司墨红镇东兴煤矿矿山地质环境保护与土地复垦方案
- 间质性肺炎护理查房课件
- 2025年中国铝锂合金行业市场规模及发展前景研究报告(智研咨询)
- 中山大学附属肿瘤医院绩效管理方案介绍文档
- 2024新版《突发事件应对法》及其应用案例课件
- 2025年山西漳山发电有限责任公司招聘笔试参考题库含答案解析
- 6《千人糕》 (说课稿)2023-2024学年统编版语文二年级下册
- 《自动化培训基础知识》课件
- 2025江苏中烟工业招聘128人高频重点提升(共500题)附带答案详解
- 2025年陕西西安印钞有限公司招聘笔试参考题库含答案解析
- 广东省2025届高考数学一模试卷含解析
评论
0/150
提交评论