《嵌入式系统与开发》嵌入式数据库sqlite移植及使用-实验报告答案
- 格式:doc
- 大小:36.50 KB
- 文档页数:3
boot实验报告本次实验由于时间限制,共完成了三种不同的变化方式,但是课后又设计了一些其他的变化方式。
1、从左到右,再从右到左亮灯,不断循环#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))#define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0xff;for (i = 1; i < =8; i++){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}for (i = 7; i > 1; i--){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}}}2、先从左到中,后从右到中,不断循环#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0xff;for (i = 0; i <4; i++){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}for (i = 7; i >= 4; i--){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}}}3、从左到右,从右到左,隔一个跳#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0xff;for (i = 1; i <8; i=i+2){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}for (i = 7; i > 1; i=i-2){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}}}课后补做:1、从左到右灯灭#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0x00;for (i = 8; i > =1; i--){LED_CS4 = (LED_VALUE >> i) +1;Delay(200);}}}2、从左到右,再从右到左灯灭,不断循环#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0x00;for (i = 8; i >= 1; i--){LED_CS4 = (LED_VALUE >> i) +1;Delay(200);}for (i = 1; i <7; i++){LED_CS4 = (LED_VALUE >> i) +1;Delay(200);}}}实验总结:数码管显示实验报告实验目的1.在实验一引导程序的基础上进一步了解ARM体系结构和编程方法;2.掌握外设访问的方法;3.理解8段数码管的显示原理实验内容1 显示同组的两位同学的四位学号2032 2033;2 显示一组大于九的四位十六进制数字,如abcd。
实验一熟悉嵌入式LINUX开发环境1、实验目的熟悉UP-TECHPXA270-S的开发环境。
学会WINDOWS环境与嵌入式Linu环境共享资源的基本方法。
2、实验内容学习UP-TECHPXA270-S系统的使用、XP和虚拟机之间传送文件方法以及UP-TECHPXA270-S和虚拟机之间共享目录的建立方法。
3、预备知识了解UP-TECHPXA270-S的基本结构和配置,Linux基本知识。
4、实验设备硬件:UP-TECHPXA270-S开发板、PC机(内存500M以上)。
软件:PC机操作系统RADHAND LINUX 9+MIMICOM+RAM LINUX操作系统5、实验步骤(1)、在虚拟机下练习Linux常用命令。
(注意以下操作只能在[root@BC root]#,也就是root文件夹下运行,不然会导致系统不能启动)a. 学习命令通过“man ***”和“*** --help”得到的命令使用方法。
b.学习并掌握如下命令:ls,cd ,pwd,cat,more,less,mkdir, rmdir ,rm,mv,cp,tar,ifconfig(2)、XP与虚拟机之间传送文件(Samba服务器建立、网络设置、文件传送);(3)、了解系统资源和连线;(4)、开发板与虚拟机之间共享目录建立(设置NFS、开发板IP设置、目录挂载),挂载文件;(5)vi(vim)的使用(6)输入qt,启动桌面,按CTRL+C退出6、实验报告要求(1)、XP和虚拟机之间传送文件步骤;虚拟机共享XP文件:选择虚拟机设置,设置要共享的文件启动Linux进入/mnt/hgfs即可看到共享文件夹服务器设置——samba服务器(设置需要共享的目录)XP共享虚拟机文件:服务器设置——samba服务器(设置需要共享的目录)确保网络的PING通(即在同一局域网):1.虚拟机的192.168.1.234(RH9)2.XP的为192.168.1.1253.在XP 下点击开始-》运行(\\192.168.1.234)4.用户名bc密码123456以上实现了Linux虚拟机(RH9)和XP的文件的共享(2)、开发板与虚拟机之间建立共享目录以及文件挂载步骤;1.服务器设置——nfs服务器(设置需要共享的目录)2.设置开发板的ip地址:ifconfig eth0 192.168.1.53.在实验箱终端里输入mount -t nfs -o nolock 192.168.1.234:/up-techpxa270/exp /mnt/nfs4./mnt/nfs即为共享目录(3)、请画出虚拟机、PC机和ARM实验箱之间的硬件连接图;(4)、在Linux中怎样配置网络;系统设置->网络,在新的选项卡中(5)、实验中遇到的问题与解决过程。
SQLite数据库和QT库的ebox移植实验报告计64 徐骏李若珍张尧马里千开始先搭建了仿真器测试,同时由于仿真器是ARMV平台的,而SQLite的C#版的Wrapper——System.Data.Sqlite编译好的dll只在ARMV平台下有效,而ebox是x86架构的。
嵌入式WinCE模拟器安装步骤注意为了后续QT图形库的安装,请安装英文版本软件开发环境准备(XP系统,按顺序安装)Windows XP Professional workstation with Service Pack 2补丁Visual studio 2005Visual studio 2005 sp1Windows embedded ce6.0Virtual Machine Network Driver for Microsoft Device Emulator不装最后的一个的话,模拟器是启动不起来的,黑屏。
CE6模拟器的Download 和Transport方式叫"Device Emulator(DMA)",DMA是Device Emulator Adaptor,会自动去找模拟器上有什么可用的连接方式,还是TCPIP/ActiveSync/KITL/Manual等几种老方法,实际用TCP/IP连接。
选择Device默认情况即可,后续开发的还需勾选x86,开始选择模拟器。
工程设置打开菜单Platform->Setting,这里有三个地方要设置:1) Build Options选项卡下,去掉Enable KITL2) Environment选项卡,添加环境变量CE_MODULES_SERIAL=1,这是用来将DMA添加进来3) Locale选项卡,用来添加你想要的语言支持,Default Language选为中文a. 选择Core OS -> CEBASE -> International -> Locale Specific Support ->Chinese (Simplified)-> Fonts -> SimSun & NSimSun (Choose 1) ->SimSun & NSimSun添加中文字体b. 不勾选Core OS -> CEBASE -> Graphics and Multimedia Technologies-> Graphics -> Raster Fonts否则则出现乱码,表现为进入系统后中文字符用下划线代替c. 添加相应组件GB18030 Data ConverterMSPY 3.0 for Windows CEWindows CE devices-》Fonts->International->Locale SpecificSupport->Chinese (Simplified)->Double Spelling (Shuang Pin)添加对于简体中文输入法的支持编译好之后就是生成一个SDK的操作可以先检测一下连接的效果TarGet的Connection optionsDownload和Transport都要选择Device Emulator(DMA)Debugger选项要选择KdStub然后点击Download右侧的Settings按钮,会弹出模拟器设置的对话框,在对话框中选择display,在Display对话框中可以设置最终模拟器显示的宽和高,以及显示深度,和翻转角度等。
合肥学院嵌入式系统设计课程技术报告(2014- 2015第2学期)报告题目:SQLite数据库概述和使用专业:自动化班级:级自动化卓越班姓名:指导老师:干开峰摘要自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。
正与数据库管理系统非常关键一样,它们也变的非常庞大,并占用相当多的系统资源。
嵌入式数据库直接在应用程序进程中运行,提供了零配置运行模式,并且资源占用非常少。
作为一个开源的嵌入式数据库产品,SQLite具有系统开销小,检索效率高的特性,嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的API去实现对数据的存取操作。
更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。
嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式, 而后者是引擎响应式。
嵌入式数据库的一个很重要的特点是体积非常小,同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。
SQLite 是D·理查德·希普开发出来的用一个小型C库实现的一种强有力的嵌入式关系数据库管理体制。
SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。
关键词:SQLite;嵌入式;数据库目录1 SQLite简介 (1)2 SQLite工作原理 (1)3 SQLite的功能特性 (2)4 SQLite的结构 (2)5 SQLite的使用 (4)5.1 SQLite里面的一些基本的操作: (4)5.2 SQLite的一些类的使用及说明: (5)5.3 SQLite嵌入式数据库使用注意: (10)6 总结 (11)1 SQLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
嵌入式系统实验实验报告一、实验目的1.基本实验.Word 资料搭建PXA270嵌入式LINUX开发软硬件环境;安装LINUX操作系统;安装与配置建立宿主机端交叉编译调试开发环境;配置宿主机 PC 机端的minicom(或超级终端)、TFTP服务、NFS服务,使宿主PC机与PXA270开发板可以通过串口通讯,并开通TFTP 和NFS服务。
2.人机接口键盘驱动;LCD控制;触摸屏数据采集与控制实验;3.应用实验完成VGA显示;Web服务器实验;网络文件传输实验;多线程应用实验。
4.扩展应用实验完成USB摄像头驱动与视频采集;GPS实验;GSM/GPRS通讯;视频播放移植;USB蓝牙设备无线通讯;NFS文件服务器;蓝牙视频文件服务器。
5.QT实验完成基本嵌入式图形开发环境搭建;“Hello world!”QT初探;创建一个窗口并添加按钮;对象通信:Signal和Slot;菜单和快捷键;工具条和状态栏;鼠标和键盘事件;对话框;QT的绘图;俄罗斯方块;基于QT的GSM手机在嵌入式LINUX下的设计与实现。
二、实验内容1.人机接口实验实验十九键盘驱动实验▪实验目的:矩阵键盘驱动的编写▪实验内容:矩阵键盘驱动的编写▪作业要求:完成键盘加减乘除运算▪实验作业源码及注释:#INCLUDE<STDIO.H>#INCLUDE<STRING.H>#INCLUDE<STDLIB.H>#INCLUDE<FCNTL.H>#INCLUDE<UNISTD.H>#INCLUDE<MATH.H>#DEFINE DEVICE_NAME “/DEV/KEYBOARD”INT MAIN(VOID){INT FD;INT RET;UNSIGNED CHAR BUF[1];INT I,F,J;DOUBLE X;INT A[2]={0};CHAR PRE_SCANCODE=0XFF;FD=OPEN(DEVICE_NAME,O_RDWR);IF(FD==-1)PRINTF(“OPEN DEVICE %S ERROR\N”,DEVICE_NAME);ELSE{BUF[0]=0XFF;I=0;F=0;WHILE(1){READ(FD,BUF,1);.Word 资料IF(BUF[0]!=PRE_SCANCODE) //判断是否放开按键IF(BUF[0]!=0XFF){ //判断是否键入PRE_SCANCODE=BUF[0];USLEEP(50000);SWITCH(BUF[0]){CASE 0X12:{ //按下ENTERSWITCH(F){ //判断运算符CASE1:{J=I;I=(I+1)%2;X=A[I]+A[J];PRINTF(“%D+%D=%D”, A[I],A[J],X);BREAK;}//加法CASE 2:{J=I;I=(I+1)%2;X=A[I]-A[J];PRINTF(“%D-%D=%D”,A[I],A[J],X);BREAK;}//减法CASE3:{J=I;I=(I+1)%2;X=A[I]*A[J];PRINTF(“%D*%D=%D”,A [I],A[J],X);BREAK;}//乘法CASE4:{J=I;I=(I+1)%2;X=A[I]/A[J];PRINTF(“%D/%D=%D”,A [I],A[J],X);BREAK;}//除法DEFAUIT:}F=0;BREAK;}CASE 0X13:{F=1;I=(I+1)%2;BREAK;} //键入运算符CASE 0X14:{F=2;I=(I+1)%2;BREAK;}CASE 0X15:{F=3;I=(I+1)%2;BREAK;}CASE 0X16:{F=4;I=(I+1)%2;BREAK;}DEFAULT:A[I]=BUF[0]; //存入数据}}}RET=CLOSE(FD);}RETURN 0;}▪实验结果:实验效果图实验二十LCD控制实验▪实验目的:了解LCD的基本原理▪实验内容:使用总线方式驱动LCD模块,体会与QT下LCD显示的差别.Word 资料▪作业要求:在目标板的LCD上显示彩色竖条纹或彩色圆环。
下文介绍的内容都是基于RedHat Linux 9.0 平台的。
引言:sqlite简介sqlite是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。
SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(C library),实现了独立的,可嵌入的,零配置的SQL数据库引擎。
特性包括:事务操作是原子,一致,孤立,并且持久的,即使在系统崩溃和电源故障之后。
零配置——不需要安装和管理。
实现了绝大多数SQL92标准。
整个数据库存储在一个单一的文件中。
数据库文件可以在不同字节序的机器之间自由地共享。
支持最大可达2T的数据库。
字符串和BLOB类型的大小只受限于可用内存。
完整配置的少于250KB,忽略一些可选特性的少于150KB。
在大多数常见操作上比流行的客户/服务器数据库引擎更快。
简单易于使用的API。
内建TCL绑定。
另外提供可用于许多其他语言的绑定。
具有良好注释的源代码,代码95%有较好的注释。
独立:没有外部依赖。
源代码位于公共域,可用于任何用途。
用SQLite连接的程序可以使用SQL数据库,但不需要运行一个单独的关系型数据库管理系统进程(separate RDBMS process)。
SQLite不是一个用于连接到大型数据库服务器(big database server)的客户端库(client library),而是非常适合桌面程序和小型网站的数据库服务器。
SQLite直接读写(reads and writes directly)在硬盘上的数据库文件。
本文将告诉你怎么开始体验SQLite ,这里没有长长的说明和冗烦的配置。
一、sqlite-3.3.8编译安装请阅读在安装包里的INSTALL或者README 文件。
SQLite已经内置了,你不需要安装任何附加的软件(additional software)。
Windows users可以下载SQLite扩展DLL。
一、sqlite数据库的编译:1、获得sqlite嵌入式数据库源码,本项目用的是sqlite-3.3.6.tar.gz。
2、sqlite的安装:将sqlite-3.3.6.tar.gz下载到/root目录下。
然后,通过下列命令解压缩sqlite-3.3.6.tar.gz: # tar zxvf sqlite-3.3.6.tar.gz,生成sqlite-3.3.6目录3、sqlite的交叉编译:进入sqlite-3.3.6目录,在sqlite-3.3.6/目录下有一个Makefile范例文件Makefile.linux-gcc。
首先通过下面的命令拷贝此文件并重命名为Makefile:cp Makefile.linux-gcc Makefile4、接下来,用vim打开Makefile文件并手动修改Makefile文件的内容。
Makefile文件的修改情况:17行:TOP = ../sqlite 修改为TOP = .73行:TCC = gcc -O6 修改为TCC = arm-linux-gcc -O681行:AR = ar cr 修改为AR = arm-linux-ar cr83行:RANLIB = ranlib 修改为RANLIB = arm-linux-ranlib注释掉一下两行:TCL_FLAGS = -I/home/drh/tcltk/8.4linuxLIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm –ldl 接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件。
找到main.mk文件中的63行:select.o table.o tclsqlite.o tokenize.o trigger.o \把它替换成:select.o table.o tokenize.o trigger.o \ 也就是把该行上的tclsqlite.o去掉。
嵌入式系统与开发嵌入式数据库sqlite移植及使用-实验报告答案【参看教材103页】:第一步,解压缩sqlite源码,命令______________________________________,在解压后的文件夹下,可以看到源码文件有_______________和_____________文件,生成Makefile的配置脚本文件_____________________,并检查当前文件夹下__________(A.存在B.不存在)Makefile文件。
第二步利用configure脚本文件生成基于ARM实验台的Makefile,具体命令为___________________________________________________________ _________________(假设安装目录为/opt/sqlite),并检查当前文件夹下__________(A.存在B.不存在)Makefile文件。
第三步,编译sqlite,命令为______________________________________,编译过程中使用的编译器为___________________________。
第四步,安装sqlit,命令为_________________________。
安装完成后到____________________文件夹下去查看相关文件,可以看到该文件夹下有__________、__________、__________和share 文件夹,其中可执行文件sqlite3位于_________文件夹,库位于_______________文件夹。
第五步,将sqlite3拷贝到开发板bin目录下,将库下的文件拷贝到开发板的lib目录下【注意链接文件的创建】第六步,数据库的使用方式1:命令操纵数据库在超级终端环境下创建数据库stucomm.db,命令为__sqilte3stucomm.db__________________________________;创建数据表stutable,字段包括id整型,name字符型,phoneNum字符型,具体命令为_____createtablestutable(idinteger,nametext,phoneNumtext)__________ ___________________________________________________________ ___________;插入2条记录,记录信息如下001,zhangsan,10086002,lisi,10000具体命令为___insertintostutablevalues(1,zhangsan,10086)_;____insertintostutableva lues(2,lisi,10000)_;查询电话号码为10086的相关记录信息,命令为__select*fromstutablewherephoneNum=10086____。
第一章1-1.简述嵌入式系统的定义。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
1-2.简述嵌入式系统的组成。
从体系结构上看,嵌入式系统主要由嵌入式处理器、支撑硬件和嵌入式软件组成。
其中嵌入式处理器通常是单片机或微控制器,支撑硬件主要包括存储介质、通信部件和显示部件等,嵌入式软件则包括支撑硬件的驱动程序、操作系统、支撑软件及应用中间件等。
嵌入式系统的组成部分是嵌入式系统硬件平台、嵌入式操作系统和嵌入式系统应用。
嵌入式系统硬件平台为各种嵌入式器件、设备(如ARM 、PowerPC、Xscale、MIPS等);嵌入式操作系统是指在嵌入式Linux、uCLinux、WinCE等。
1-3.ARM7处理器使用的是(ARMv4)指令集。
ARM7内核采用冯·诺依曼体系结构,数据和指令使用同一条总线。
内核有一条3级流水线,执行ARMv4指令集。
1-6.ARM9采用的是(5)级流水线设计。
存储器系统根据哈佛体系结构(程序和数据空间独立的体系结构)重新设计,区分数据总线和指令总线。
第二章2-1.简述ARM可以工作在几种模式。
ARM处理器共有7种工作模式:用户模式(User)、快速终端模式(FIQ)、外部中断模式(IRQ)、特权模式(svc)、数据访问中止模式(Abort)、未定义指令中止模式(Undef)、系统模式(System)。
除用户模式外其他6种模式称为特权模式。
在特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换。
再除去系统模式,其余5种模式又称为异常模式。
2-2.ARM核有多少个寄存器?ARM处理器有如下37个32位长的寄存器:(1)30个通用寄存器;(2)6个状态寄存器:1个CPSR(Current Program Status Register,当前程序状态寄存器),5个SPSR(Saved Program Status Register,备份程序状态寄存器);(3)1个PC(Program Counter,程序计数器)。
第1篇一、实验目的1. 熟悉嵌入式系统开发环境。
2. 掌握嵌入式编程的基本方法。
3. 理解嵌入式程序的结构和运行机制。
4. 提高实际编程能力,为后续嵌入式系统开发打下基础。
二、实验环境1. 操作系统:Windows 102. 开发工具:Keil uVision53. 嵌入式平台:STM32F103C8T64. 编程语言:C语言三、实验内容本次实验主要完成以下任务:1. 创建工程,配置工程参数。
2. 编写嵌入式程序,实现基本功能。
3. 编译、下载程序到目标板。
4. 观察程序运行效果,调试程序。
四、实验步骤1. 创建工程(1)打开Keil uVision5,点击“Project”菜单,选择“New uVision Project”。
(2)选择目标芯片型号STM32F103C8T6,点击“OK”。
(3)在弹出的对话框中,选择项目保存路径,输入项目名称,点击“Save”。
(4)点击“OK”,完成工程创建。
2. 配置工程参数(1)双击“Target 1”,打开目标配置界面。
(2)在“Device”下拉列表中选择STM32F103C8T6。
(3)根据实际情况配置时钟、中断、外设等参数。
(4)点击“OK”,保存配置。
3. 编写嵌入式程序(1)在工程目录下,找到“User”文件夹,打开“main.c”文件。
(2)根据实验要求,编写嵌入式程序代码。
以下为示例代码:```cinclude "stm32f10x.h"void delay(unsigned int ms){unsigned int i, j;for (i = ms; i > 0; i--)for (j = 720; j > 0; j--);}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA 时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 设置PA0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOAwhile (1){GPIO_SetBits(GPIOA, GPIO_Pin_0); // PA0输出高电平delay(500);GPIO_ResetBits(GPIOA, GPIO_Pin_0); // PA0输出低电平delay(500);}}```4. 编译、下载程序(1)点击“Project”菜单,选择“Build Target”编译程序。
实验项目名称实验四:嵌入式SQL的使用一、实验目的1、明确嵌入式SQL的意义。
2、学会使用不用游标的DML语句。
3、学会使用使用游标的DML语句。
二、实验环境在Win7-32系统下,用Microsoft SQL Server Management Studio实现的三、实验内容以学生选课数据库为中心,使用PowerBuilder语言(Vb或Delphi),设计一个数据录入、查询窗口,进行练习。
1、不用游标语句2、使用游标的语句四、实验结果1、不用游标语句(1)查询结果为单记录的SELECT语句格式:SELECT 目标列INTO 主变量FROM 基本表(或视图)[WHERE 条件表达式];如:根据主变量GIVENS#的值找该学生的信息SELECT SN,SD,SAINTO :SNAME,:DEPT,:AGEFROM SWHERE S#=:GIVENS#;(2)UPDATE语句如:UPDATE SSET SA=NULLWHERE SD=”CS”(3)DELETE语句如:DELETEFROM SCWHERE :DEPT=(SELECT SDFROM SWHERE S.S#=SC.S#);2、使用游标的语句(1)查询结果为单记录的SELECT语句格式:SELECT 目标列INTO 主变量FROM 基本表(或视图)[WHERE 条件表达式];如:根据主变量GIVENS#的值找该学生的信息SELECT SN,SD,SAINTO :SNAME,:DEPT,:AGEFROM SWHERE S#=:GIVENS#;2.查询数据Update语句UPDATE SSET SA=NULLWHERE SD=”MA”(3)DELETE语句如:DELETEFROM SCWHERE :sd=(SELECT SDFROM SWHERE S.S#=SC.S#);已删除4)INSERT语句如:INSERTINTO S(S#,SN,SD,SG,SEX)V ALUES(:GIVENS#,:SNAME,:DEPT)使用C#操作的代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace Sql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){l1.Text = "请连接数据库!";}static SqlConnection sql = null;//创建连接对象static SqlCommand stu = new SqlCommand();//创建对象private void button1_Click(object sender, EventArgs e){if (textBox1.Text == ""){MessageBox.Show(null,"请输入数据库名称",0,MessageBoxIcon.Error); }else{try{string sc = "server=A506;database=" + textBox1.Text.Trim() + ";uid=sa;pwd=123";sql = new SqlConnection(sc);sql.Open();if (sql.State == ConnectionState.Open){l1.Text = "连接成功;button3.Enabled = true;}}catch(Exception ex){MessageBox.Show(ex.Message);//l1.Text= "连接失败请重试;}}}private void button2_Click(object sender, EventArgs e){try{sql.Close();if (sql.State == ConnectionState.Closed){l1.Text = "关闭成功";}}catch{l1.Text = "关闭失败,请连接数据库!";}}private void sqls(string str)//数据库操作Á函¡数用接SQL语句?{try{stu.Connection = sql;//设置连接属性DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(str, sql);sda.Fill(ds, "student");dataGrid1.DataSource = ds.Tables["student"].DefaultView; }catch (Exception ex){// 查¨¦询¡¥失º¡ì败㨹!ê?MessageBox.Show(ex.Message);}}private void updata(string str){try{stu.Connection = sql;stu = new SqlCommand(str, sql);stu.ExecuteNonQuery();l1.Text = "更新成功!";}catch{MessageBox.Show("更新失败¹请重试!");}}private void button3_Click(object sender, EventArgs e){string select = "select * from student where sno=" + textBox2.Text.Trim(); sqls(select);}private void button5_Click(object sender, EventArgs e){string select = "select * from student where sdept= '" +textBox2.Text.Trim()+"'";sqls(select);}private void button4_Click(object sender, EventArgs e){string upda="UPDATE student SET sage=null WHEREsdept='"+textBox2.Text.Trim()+"'";updata(upda);}private void sqlinsert(string str){try{stu.Connection = sql;stu = new SqlCommand(str, sql);stu.ExecuteNonQuery();l1.Text = "插入成功,请查询!";}catch(Exception ex){MessageBox.Show("插入失败请重试?"+ex.Message);}}private void button6_Click(object sender, EventArgs e){try{string sno, sname, sd, sage, sex;//读取单元格内容sno = data1.CurrentRow.Cells[0].Value.ToString();sname = data1.CurrentRow.Cells[1].Value.ToString();sd = data1.CurrentRow.Cells[2].Value.ToString();sage = data1.CurrentRow.Cells[3].Value.ToString();sex = data1.CurrentRow.Cells[4].Value.ToString();l1.Text = sno + sname + sd + sage + sex;string insert = "INSERT INTO student(sno,sname,sdept,sage,ssex) VALUES('" +sno.Trim() + "','" + sname.Trim() + "','" + sd.Trim() + "','" + sage.Trim() + "','" + sex.Trim() + "')";sqlinsert(insert);}catch{MessageBox.Show("请检查输入内容!");}}private void button7_Click(object sender, EventArgs e){data1.Visible = true;}private void sqldelete(string str){try{stu.Connection = sql;stu = new SqlCommand(str, sql);stu.ExecuteNonQuery();l1.Text = "删除成功请查询?";}catch(Exception ex){MessageBox.Show("删除失败请重试"+ex.Message);}}private void button8_Click(object sender, EventArgs e){string delete = "delete from student where sno=" + textBox2.Text.Trim();sqldelete(delete);}private void data1_CellContentClick(object sender, DataGridViewCellEventArgs e) {}}}五、实验心得:本次实验完成的不是很顺利,中间遇到很多问题,但通过和同学们讨论、网上查找都得到了很好的解决,通过实验,知道了自己哪方面掌握不足,对视图的使用还要多加练习,是自己掌握更加牢固。
《嵌入式数据库sqlite移植及使用》实验报告学生姓名:学号:专业班级:指导教师:完成时间:实验3 嵌入式数据库sqlite移植及使用一.实验目的理解嵌入式软件移植的基本方法,掌握sqlite数据库软件移植的步骤,掌握sqlite 开发的两种方式—命令模式和C代码开发模式的使用方法,并编程实现简单通讯录查询实验。
二.实验内容实验3.1 移植嵌入式数据库sqlite实验3.2 简单通讯录查询实例设计和测试三.预备知识Linux使用、数据库相关知识等四.实验设备及工具(包括软件调试工具)硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。
软件:WinXP或UBUNTU开发环境。
五.实验步骤5.1 移植嵌入式数据库sqlite步骤【参看教材103页】:第一步,解压缩sqlite源码,命令_____#tar zxvf sqlite-autoconf-3071300.tar.gz__________,在解压后的文件夹下,可以看到源码文件有___aclocal.m4_____和____configure.ac_________文件,生成Makefile的配置脚本文件____Configure__________,并检查当前文件夹下__B____(A.存在 B.不存在)Makefile文件。
第二步利用configure脚本文件生成基于ARM实验台的Makefile,具体命令为_______#./Configure CC_=arm-linux-gcc-prefix=/opt/sqlite-host=arm-linux_______________________(假设安装目录为/opt/sqlite),并检查当前文件夹下____A___(A.存在 B.不存在)Makefile文件。
第三步,编译sqlite,命令为_______#make_______________________,编译过程中使用的编译器为_________gcc__________________。
嵌入式数据库sqlite移植及使用SQLite是一个嵌入式关系型数据库,使用C语言编写,具有占用内存小、开销小、速度快等特点。
本文将介绍如何在嵌入式系统中移植SQLite并使用。
1. 下载安装SQLite从SQLite官网下载最新版本的源码并解压缩,进入解压缩后的目录执行以下命令:./configuremakemake install以上命令将安装SQLite到系统中。
2. 创建数据库创建一个新的SQLite数据库可以使用如下命令:sqlite3 /path/to/database其中,`/path/to/database`是数据库的路径。
如果路径中包含目录不存在,SQLite会自动创建该目录。
3. 执行SQL语句在SQLite中,使用SQL语言进行数据库操作。
例如,创建一个名为`users`的表:CREATE TABLE users (id INTEGER PRIMARY KEY,username TEXT NOT NULL,password TEXT NOT NULL);以上SQL语句将创建一个名为`users`的表,表中包含三个字段:`id`、`username`和`password`。
4. 使用SQLite APISQLite提供了一组API函数,可以在C/C++程序中使用。
以下是一个简单的示例,展示了如何使用SQLite API创建`users`表:c#include <stdio.h>#include <sqlite3.h>int main(int argc, char* argv[]) {sqlite3* db;int rc;rc = sqlite3_open("/path/to/database", &db); 打开数据库if (rc != SQLITE_OK) {fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));sqlite3_close(db);return 1;}rc = sqlite3_exec(db, "CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT NOT NULL, password TEXT NOT NULL)", NULL, NULL, NULL); 执行SQL语句创建表if (rc != SQLITE_OK) {fprintf(stderr, "Can't create table: %s\n", sqlite3_errmsg(db));sqlite3_close(db);return 1;}sqlite3_close(db); 关闭数据库return 0;}以上代码将创建一个名为`users`的表,字段为`id`、`username`和`password`。
实验报告ARM嵌入式系统原理及应用开发目录实验一 ARM汇编指令实验1 (1)实验二 ARM汇编指令实验2 (4)实验三汇编与C语言的相互调用实验 (8)实验一ARM汇编指令实验1一、实验目的1.初步学会使用Embest IDE for ARM 开发环境及ARM软件模拟器;2.通过实验掌握简单ARM汇编指令的使用方法。
二.实验设备1.硬件:PC机;2.软件:Embest IDE 2004集成开发环境。
Windows98/2000/NT/XP。
三.实验内容1.熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储单元。
2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。
四.实验原理ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。
1.ARM通用寄存器通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序计数器R15。
2.存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。
字节0~3存放第一个字,字节4~7存放第2个字,以此类推。
ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
3.GNU基础知识Embest IDE集成了GNU汇编器as、编译器gcc和链接器ld。
因此,编写程序要符合CNU的语法和规则。
关于as.gcc和ld的具体使用,请参照Embest IDE 所带的电子文档ProgRef.chm。
五.实验操作步骤1. 实验A(1)新建工程:先建一个文件夹如:H:\ test1。
然后运行ADS1.2集成开发环境,选择File→New 菜单项,弹出一个对话框,然后出来图1.1新建工程类型选择对话框,选择project,在“Project name”中输入工程文件名”test1”,点击确定,同时创建一个与工程名相同的工作区。
实验6 嵌入式SQL通过这个实验,我们首先熟悉了嵌入式SQL编程,并可以自己动手编写一个小型的数据库应用程序。
而且能够大体了解我们平时在日常生活中看到的一些数据库应用程序是如何开发出来的。
做完这个实验,你会发现那些数据库程序也并不是十分高深。
这是我们最后一个实验,也是工作量最大的一个实验,大约需要2-3次实验课的时间。
希望同学们认真完成。
实验平台1.OS:WindowsXP2.DBMS:SQLServer2000piler:Visual C++ 6.0(大家可能没有接触过VC++,但并不妨碍我们做这个实验,因为在这个实验中我们只利用它的编译功能。
)预备知识1)嵌入式SQL编程:嵌入式SQL由SQL语句和C/C++代码组成。
其中SQL语句由预处理器翻译成C或C++的源代码。
对预处理后的源代码进行编译、连接生成可执行程序后方可运行。
●SQL预处理器SQLServer的预处理程序是nsqlprep.exe。
其常用的语法格式如下:nsqlprep 程序文档名⏹要求程序文档名的后缀为.sqc,可以省略。
⏹预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档名同一个路径下nsqlprep.exe在SQLServer的安装目录的MSSQL\Binn下。
在本机中SQLServer的安装目录是C:\Program Files\Microsoft SQL Server,nsqlprep.exe在C:\Program Files\Microsoft SQL Server\MSSQL\Binn。
由于默认的安装方式(典型安装)并没有安装应用程序nsqlprep.exe,因此,需要你把我提供的binn文件夹,拷贝到该目录下覆盖原来的Binn。
●连接方式经预处理后的c文件就可以用c的编译器进行编译连接了。
使用Visual C++ 6.0进行编译连接,连接方式是动态连接,用到动态链接库SQLakw32.dll,sqlaiw32.dll;此两文件已经随同binn.rar的其他内容,被拷贝到C:\Program Files\Microsoft SQL Server\MSSQL\Binn下;但仍然需要把该路径加到系统的路径变量中,以使得程序运行时能找到这两个文件。
《嵌入式数据库sqlite移植及
使用》
实验报告
学生姓名:
学号:
专业班级:
指导教师:
完成时间:
实验3 嵌入式数据库sqlite移植及使用
一.实验目的
理解嵌入式软件移植的基本方法,掌握sqlite数据库软件移植的步骤,掌握sqlite 开发的两种方式—命令模式和C代码开发模式的使用方法,并编程实现简单通讯录查询实验。
二.实验内容
实验3.1 移植嵌入式数据库sqlite
实验3.2 简单通讯录查询实例设计和测试
三.预备知识
Linux使用、数据库相关知识等
四.实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。
软件:WinXP或UBUNTU开发环境。
五.实验步骤
5.1 移植嵌入式数据库sqlite
步骤【参看教材103页】:
第一步,解压缩sqlite源码,命令______________________________________,在解压后的文件夹下,可以看到源码文件有_______________和_____________文件,生成Makefile的配置脚本文件_____________________,并检查当前文件夹下__________(A.存在 B.不存在)Makefile文件。
第二步利用configure脚本文件生成基于ARM实验台的Makefile,具体命令为____________________________________________________________________________(假设安装目录为/opt/sqlite),并检查当前文件夹下__________(A.存在 B.不存在)Makefile文件。
第三步,编译sqlite,命令为______________________________________,编译过程中使用的编译器为___________________________。
第四步,安装sqlit,命令为_________________________。
安装完成后到____________________文件夹下去查看相关文件,可以看到该文件夹下有__________、__________、__________和share 文件夹,其中可执行文件sqlite3位于_________文件夹,库位于_______________文件夹。
第五步,将sqlite3拷贝到开发板bin目录下,将库下的文件拷贝到开发板的lib目录下【注意链接文件的创建】
第六步,数据库的使用
方式1:命令操纵数据库
在超级终端环境下创建数据库stucomm.db,命令为__sqilte3 stucomm.db__________________________________;
创建数据表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 “sqlite3.h”
int main(int argc, char** argv)
{
sqlite3 * db = NULL;
char* zErrMsg = NULL;
int rc;
sqlite3_open( “:memory:”, &db ); //打开内存数据库
rc = sqlite3_exec(db, “create table employee(id integer primary key, age integer);”, NULL, 0, &zErrMsg);//创建数据库
for( int i= 0; i < 10; i++ )
{
statement = sqlite3_mprintf( "insert into employee values(%d, %d);”, NULL, 0, &zErrMsg, rand()%65535, rand()%65535 );
rc = sqlite3_exec( db, statement, NULL, 0 , 0 );//插入数据
sqlite3_free( statement );
}
rc = sqlite3_exec(db, “select * from employee;” , callback, 0, &zErrMsg );//查询,并调用回调函数
sqlite3_close(db);
}
假设上述代码文件名为sqlite_exp.c文件,编译命令为__arm-linux-gcc -o sqlite_exp sqlite_exp.c___,其中头文件位于/opt/sqlite/include,库位于/opt/sqlite/lib下。