《物联网编程与应用》课件-项目7 数据存储_第1页
《物联网编程与应用》课件-项目7 数据存储_第2页
《物联网编程与应用》课件-项目7 数据存储_第3页
《物联网编程与应用》课件-项目7 数据存储_第4页
《物联网编程与应用》课件-项目7 数据存储_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目7数据存储智慧校园系统项目概述

数据是物联网的核心驱动力,数据存储是智慧校园系统开发的重要组成部分,本项目将各传感器采集的数据存储到数据库中,实现对采集数据的存储和分析处理。

本项目采用MicrosoftSQLServer2008R2进行数据存储,结合C#编程实现各传感器采集数据进行存储、更新、删除、修改的基本操作,为后续综合实训的智慧校园相关系统的整合做准备。IOTPart制作《环境数据表》任务01【任务描述】MicrosoftSQLServer2008R2是Microsoft公司开发的一款关系型数据库管理系统。它是一个全面的数据库平台,数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使程序员可以创建和管理高可用和高性能的数据应用程序。

本任务旨在熟悉使用数据库“MicrosoftSQLServer2008R2”软件来创建数据库和数据表,能手动往数据表中添加修改数据。通过本任务的实施,使学生学会MicrosoftSQLServer2008R2创建数据库、数据表。7.1制作《环境数据表》【任务实施】

在任务实施前,需先安装“MicrosoftSQLServer2008R2”软件。安装完成后,打开SQLServerManagementStudio并登录SQL,登录后的主界面如图7-1所示。在左侧“对象资源管理器”面板中选中“数据库”,单击鼠标右键,选择“新建数据库”,数据库名称为“环境数据表”,其余则使用默认设置,单击“确定”,完成数据库创建。新建数据库对话框如图7-2,数据库创建后的查看如图7-3所示。打开“环境数据”数据库,右键单击“表”,选择“新建表”,弹出新建表列名设置,新建表选择界面如图7-4,新建表结构如图7-5所示。列名输入“light”,“temperature”,“humidity”数据类型分别为“varchar(MAX)”,“varchar(MAX)”,“varchar(MAX)”如图7-6所示。单击“保存”按钮,在“选择名称”对话框中输入表名称“EnvironmentWork”。如图7-7所示。在数据库中找到新建的表“EnvironmentWork”,右键选择“编辑前200行”,就可以在表中添加数据,如图7-8所示。在表“EnvironmentWork”中添加一周的环境数据内容,light为光照,temperature为温度,humidity为湿度,数据内容自行设置。7.1制作《环境数据表》【知识提炼】

数据库

数据库DB(Database):是长期存储在计算机内有组织、可共享的数据集合。数据库中的数据是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。数据库管理系统

数据库管理系统是位于用户和操作系统之间的一层数据管理软件,如SQL数据库管理系统。它是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。数据表

数据表示数据库的组成部分之一,是实际存储数据的地方,每一个数据库都有自己的数据表。数据表由行和列组成的,创建数据表就是定义数据表的列的过程。7.1制作《环境数据表》

字段与记录

数据表中每一行称为一条记录,用于表示所存储物体的各方面属性。

数据表中的数据项称为字段,字段表示物体某方面的性质,如学生信息中的学号、姓名、出生日期等。主键

主键是表中其值能唯一地标识表中的每一行,可以是一个字段或多字段的组合,通过主键可强制表的实体完整性。一个表只能有一个主键,而且主键中的列不能接受空值。例如:学生表(学号,姓名,性别,班级),其中每个学生的学号是唯一的,学号就是一个主键。Sql数据类型

SqlServer提供的系统数据类型有共20多种,它自动限制每个系统数据类型的取值范围,当插入数据库中的值超过了数据允许的范围时,SqlServer就会报错。常用数据类型如下:1)bit整型:其值只能是0、1或空值。2)tinyint整型:能存储从0到255之间的整数,这种数据类型在数据库中占用1个字节。7.1制作《环境数据表》

3)smallint整型:能存储从-32768到32767之间的整数,这种数据类型在数据库中占用2字节。4)int整型:i-2147483648到2147483647之间的整数,几乎能存储数据库所有整型数据,这种数据类型在数据库中占用4字节。5)money货币型:用来表示钱和货币值,能存储从-9220亿到9220亿之间的数据,精确到货币单位的万分之一。6)float浮点数值型:浮点数从-1.79E+308到1.79E+308之间的任意数,浮点数是近似的,其范围内不是所有的数都能精确表示。7)Smalldatetime日期时间型:用来表示日期和时间,精确到一分钟。8)datetime日期时间型:用来表示日期和时间,精确到三百分之一秒。9)Uniqueidentifier特殊数据型:用来存储一个全局唯一标识符,即GUID。GUID是一种全局唯一的标识。10)char字符型:用来存储指定长度的定长非统一编码型的数据,定义一字段此数据类型时必须指定列长。11)varchar字符型:同char类型一样,用来存储字符数据。但此数据类型为可变长度。当定义一字段为该数据类型时必须指定该列的最大长度。7.1制作《环境数据表》

12)text字符型:用来存储大量的字符数据,最多可以有231-1或20亿个字符。13)nvarchar统一编码字符型:用来存储可变长度的字符型数据,能存储4000种字符,使用的字节空间增加了一倍。14)ntext统一编码字符型:此数据类型能存储230-1或将近10亿个字符,且使用的字节空间增加了一倍。15)binary二进制数据类型:用来存储可达8000字节长的定长的二进制数据。16)varbinary二进制数据类型:用来存储可达8000字节长的可变长度的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型。17)image二进制数据类型:用来存储可变长度的二进制数据。7.1制作《环境数据表》【能力拓展】

在数据库“环境数据表”中建立表EnvironmentWorkNew,主键为Id,整形,可以自增,EnvironmentDay为日期型date,EnvironmentWork为varchar(200)。如图7-9所示。7.1制作《环境数据表》【自主探究】

使用sql语句,为新表EnvironmentWorkNew添加一行内容,EnvironmentDay的值为日期为“2017年9月”,EnvironmentWork的值为“环境适宜”。7.1制作《环境数据表》IOTPart存储校园环境数据任务02【任务描述】

本任务实现动态采集的环境数据,并通过程序代码将采集到的数据存储到SQL数据库中。通过本任务的实施,使学生了解ADO.NET,学会数据库的查询、添加、删除、修改命名。7.2存储校园环境数据

7.2存储校园环境数据界面控件设置控件名称控件类型属性名属性值控件功能Form1窗体Text模拟量采集

groupBox1框架容器Text数据显示

groupBox2框架容器Text配置

txt_light文本框

输入/显示光照值txt_temperature文本框

输入/显示温度值txt_humidity文本框

输入/显示湿度值btn_get命令按钮Text获取控制数据获取btn_save命令按钮Text保存保存数据到sql数据库btn_Open命令按钮Text开启打开串口com_port下拉列表框

显示串口lbl_light标签Text光照

lbl_temperature标签Text温度

lbl_humidity标签Text湿度

【任务实施】

在数据库“环境数据表”中新建一张“CampusEnvironment”表,共四列,主键为“ID”,自增,其余三列名称分别为“light”,“humidity”,“temperature”,均为varchar(10)类型。创建新项目,添加DeviceCtrlLibrary.dll引用;创建创建界面,参照教材图7-10与表7-1;引用System.Data.SqlClient、System.IO.Port与DeviceCtrlLibrary命名空间;声明stringsqlConnectionString全局变量,用于数据库的连接,sql连接对象“mySqlConnection”和sql命令对象“mySqlCmd”,一个布尔变量“IsOpen”用于描述串口是否打开,一个ADMA4017接收数据模板“ResModel”;【小贴士】

其中“PC-20150908SCJF\SQLSERVER1026”为自己sql数据库的名称,也可以用“.”号来表示本机默认数据库名称,该代码采用“sa”用户名来连接数据库,密码为“123”,请根据实际情况修改数据库名称和“sa”的密码。7.2存储校园环境数据参照教材代码,添加Form1窗体Load事件,实现读取系统串口;参照教材代码,添加btn_Open开启按钮单击事件,实现串口设置;参照教材代码,添加btn_get开启按钮单击事件,实现获取adam4017的数据;参照教材代码,添加btn_save开启按钮单击事件,实现保存adam4017的数据;7.2存储校园环境数据【知识提炼】Select查询语句

主要用于从表中选取数据。

语法:SELECT列名称FROM表名称或者SELECT*FROM表名称【小贴士】SQL语句对大小写不敏感。SELECT等效于select

已知表user,有3个字段id,username,birthday,从表中查询数据。1),查询表中所有数据:SELECT*FROMuser2)查询表中id、username数据:SELECTid,usernameFROMuser3)查询表中姓名为张三的生日数据:SELECTbirthdayFROMuserwhereusername=’张三’7.2存储校园环境数据【知识提炼】

insert插入语句

主要用于向表中添加新数据的操作。

语法:insertinto表名(列名一,列名二,列名N)values(列一的值,列二的值,列N的值);

已知表user,有3个字段id,username,birthday,向表添加数据:1)第一种写法(全部都写):Insertintouser(id,username,birthday)values(1,'张三','1999-09-09');

在表“user”中插入id,username,birthday,对应的值为1,'张三','1999-09-09'。2)第二种写法(只写部分):Insertintouser(id,username)values(2,'李四');

在表“user”中插入id,username,对应的值为1,’李四'。3)第三种写法(不写列名,直接写值,所有的值都要按照表的列的顺序去写):Insertintouservalues(3,'王五','1910-10-10')。7.2存储校园环境数据【知识提炼】Update更新语句

主要用于对表中现有的数据进行更新操作。

语法:update表名set列名一=列名的值,列名二=列名的值,列名三=列名...where从句--加上限定条件,只有满足条件的才会被修改,更新(注意:不加where从句,那就是所有的都更新,Sql语句中的字符值要加单引号)。

已知表user,修改表中“张三”的生日改为‘2016-1-1’:Updateusersetbirthday=’2016-1-1’whereusername=’张三’7.2存储校园环境数据【知识提炼】ADO.NET对象模型简介ADO.NET是一组向.NET程序员公开数据访问服务的类。ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。

它提供了对关系数据、XML和应用程序数据的访问,因此是.NETFramework中不可缺少的一部分。

ADO.NET支持多种开发需求,包括创建由应用程序、工具、语言或Internet浏览器使用的前端数据库客户端和中间层业务对象。ADO.NET的类由两部分组成:.NET数据提供程序(DataProvider)和数据集(Dataset)。

数据提供程序负责与数据源的物理连接,而数据集则表示实际的数据,这两部分都可以与数据的使用程序进行通信

。ADO.NET对象模型中有5个主要的组件,分别是Connection对象、Command对象,DataAdapter对象,DataReader对象和DataSet对象。7.2存储校园环境数据【知识提炼】ADO.NET中4个核心组件7.2存储校园环境数据对象说明特点Connection建立于特定数据库的连接可以自己创建,也可由其他对象自动产生(如DataAdapter)Command对数据源执行命令透过Connection对象来下达命令,Connection的指向决定操作对象DataAdapter用数据源中的查询结果填充DataSet对象DataAdapter填充到DataSet中的是断开连接的脱机数据DataReader用数据源中的查询结果填充DataSet对象DataReader读取数据必须在维持数据库连接的前提下进行【知识提炼】ADO.NET中SQL操作类

1)SqlConnection类

此类表示SQLServer数据库的一个打开的连接,该类无法继承。SqlConnection对象表示与SQLServer数据源的一个唯一的会话(对于所有第三方SQL服务器产品以及其他支持OLEDB的数据源,请使用OleDbConnectio)。对于客户端/服务器数据库系统,它等效于到服务器的网络连接。SqlConnection与SqlDataAdapter和SqlCommand一起使用,可以在连接MicrosoftSQLServer数据库时提高性能。SqlConnection重载有两个构造函数分别为:SqlConnection()初始化SqlConnection类的新实例。SqlConnection(String)如果给定包含连接字符串的字符串,则初始化SqlConnection类的新实例。

一般在处理完事务后就可以关闭该链接。2)SqlCommand类

此类

表示要对SQLServer数据库执行的一个Transact-SQL语句或存储过程。7.2存储校园环境数据

此类重载有四个构造函数:SqlCommand()初始化SqlCommand类的新实例。SqlCommand(String)用查询文本初始化SqlCommand类的新实例。SqlCommand(String,SqlConnection)初始化具有查询文本和SqlConnection的SqlCommand类的新实例。SqlCommand(String,SqlConnection,SqlTransaction)使用查询文本、一个SqlConnection以及SqlTransaction来初始化SqlCommand类的新实例。3)SqlDataReader类

此类提供一种从SQLServer数据库自上而下地读取数据源中的数据,而且这些数据是只读的,不允许进行其他操作。

注意:若要创建SqlDataReader,必须调用SqlCommand对象的ExecuteReader方法,而不要直接使用构造函数。后文实例中将有所体现。

在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader服务,对SqlConnection无法执行任何其他操作,只能将其关闭。除非调用

SqlDataReader的Close方法,否则会一直处于此状态。例如,在调用Close之前,无法检索输出参数。因此一般在读取操作结束后就需要调用Close方法使SqlConnection可以执行其他操作。7.2存储校园环境数据【能力拓展】

通过“任务实施”的操作步骤,已经实现了的环境数据的添加。在此基础上在任务中添加一个删除按钮和一个更新按钮,点击“删除”按钮则删除所有数据,点击“更新”按钮则将数据库里温度小于20对应行的光照都改为“500”。界面如下所示:7.2存储校园环境数据【自主探究】

在边学边做的基础上,为程序增加下列功能:添加一个文本框TextBox(Name属性值为lightValue)用于输入更新条件,当表中“light”值为该TextBox的值时,把它对应的“temperature”值改为100。7.2存储校园环境数据IOTPart存放校园安防数据任务03【任务描述】在校园安防模块中,已经实现了摄像头图片的存取。在实际应用中为方便存储,常将图片存入数据库。本任务在用户注册时,通过摄像头对用户进行拍照,同时将用户名、密码及个人照片保存到数据库中。并且当用户登录时显示数据库里的用户照片。通过本任务的实施,使学生熟悉数据库照片的存取。7.3存放校园安防数据程序运行界面

7.3存放校园安防数据界面控件设置控件名称控件类型属性名属性值控件功能image_userPictureBoxImage图片用户照片nameTextboxText文本用户账号PasswordTextboxText文本用户密码7.3存放校园安防数据程序运行界面

7.3存放校园安防数据界面控件设置控件名称控件类型属性名属性值控件功能pic_videoPictureBoxImage图片实时摄像头nameTextboxText文本用户账号PasswordTextboxText文本用户密码【任务实施】

打开SQLServer2008R2,向数据库中添加一张img_user表,表的属性如图7-12所示。name数据类型为nvarchar(50)并且设置为主键,password数据类型为nvarchar(MAX),img为image数据类型,time为datetime数据类型;新建“Windows窗体应用程序”项目,名称为“注册拍照”,主界面默认为From1。创建图7-13所示的窗体界面,该窗体中各控件的属性见表7-3,其中左侧空白区域是PictureBox控件image_user;创建图7-14所示的窗体Form2,作为注册界面,该窗体中各控件的属性见表7-4,左边空白区域是一个PictureBox控件pic_video。;参照教材代码,引用DeviceCtrlLibrary.DLL、IPCameraDll.DLL与MyCamer.DLL,编写跳转界面的代码,创造注册按钮单击事件;参照教材代码,创建AppSet.cs类,实现设置摄像机参数,数据库连接字符串;参照教材代码,在Form2窗体引用IPCameraDll、MyCamerN、DeviceCtrlLibrary、System.IO、System.Data.Sql、System.Data.SqlClient命名空间;7.3存放校园安防数据参照教材代码,在程序中定义一个ipCarmeraHelper_ImageRead,用于获取摄像头的实时图片;参照教材代码,添加Form2窗体Load事件,实例化摄像头控制类;参照教材代码,在程序中定义一个SecurityUpData方法,把图片保存到数据库;参照教材代码,添加button1、button2开启按钮单击事件,实现数据库的注册、登录;参照教材代码,在Form1窗体引用System.IO、System.Data.Sql、System.Data.SqlClient命名空间;7.3存放校园安防数据【知识提炼】

MemoryStream类

常用的MemoryStream构造函数有以下3种。1)MemoryStream()该构造函数初始分配容量大小为0字节,随着数据的不断写入,其容量可以不断的自动扩展。一般在不确定数据内容大小的时候应用这种形式。2)MemoryStream(byte[])和MemoryStream的无参数构造函数不同,通过该构造数的MemoryStream实例根据byte类型的字节数组进行初始化,并且实例的容量大小固定为字节数组的长度。由于实例的容量不能扩展,该构造函数一般用于数据不发生变化的场合。3)MemoryStream(intcapacity)通过该构造函数创建初始容量大小为capacity的实例。并且实例容量大小可扩展。7.3存放校园安防数据7.3存放校园安防数据名称说明BeginRead

开始异步读操作。(从

Stream继承)BeginWrite

开始异步写操作。(从

Stream继承)Close

关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)(从

Stream继承)Dispose

释放资源(从

Stream继承)EndRead

等待挂起的异步读取完成。(从

Stream继承)EndWrite

结束异步写操作。(从

Stream继承)Flush

重写

Stream.Flush以便不执行任何操作GetBuffer

返回从其创建此流的无符号字节数组。是会返回所有分配的字节,不管用没用到。Read

从当前流中读取字节块并将数据写入

buffer中。注意,Read()方法是从当前流的Position属性的位置开始读,这就是为什么很多人测试的时候,刚刚写入内存的数据,Read()方法无法读取到内容的原因,因为刚刚写入内存之后,位置恰好是在最后一位了。Read()方法当然读不到。此方法强大之处在于,你可以从一个内存流中读出你想要的一个片段。ReadByte

从当前流中读取一个字节。(注意是按字节读取)(从

Stream继承)Seek

将当前流中的位置设置为指定值。(从

Stream继承)SetLength

将当前流的长度设为指定值。

(从

Stream继承)Synchronized

在指定的

Stream对象周围创建线程安全(同步)包装。(从

Stream继承)ToArray

将整个流内容写入字节数组,而与

Position属性无关。Write

使用从缓冲区读取的数据将字节块写入当前流。注意下,第二个参数是第一个参数数组的偏移量就可以了。WriteByte

将一个字节写入当前流中的当前位置。

(从

Stream继承)WriteTo

将此内存流的整个内容写入另一个流中。(常用在使用内存流向其他的流转换,如文件流)。IOTPart按日期查询校园安防数据任务04【任务描述】

本任务在任务三的基础上实现查询图片的功能,通过任务的实施使学生熟悉DateTimePicker控件的使用。7.4按日期查询校园安防数据程序运行界面

7.4按日期查询校园安防数据界面控件设置控件名称控件类型属性名属性值控件功能pictureBox1PictureBoxImage图片图片显示namelabelText文本用户账号PasswordlabelText文本用户密码TimelabelText文本注册时间StartTimedateTimePickerDatetime时间起始时间EndTimedateTimePickerDatetime时间结束时间【任务实施】

打开任务三完成的程序,再创建一个新的窗体界面为Form3。创建图7-17所示的窗体界面,该窗体中各控件的属性见表7-6;参照教材代码,在Form1中添加跳转Form3的命令按钮,并添加单击事件;引用System.IO、System.Data.Sql、System.Data.SqlClient命名空间;参照教材代码,添加Form3窗体Load事件;参照教材代码,添加button1开启按钮单击事件,实现照片查询;参照教材代码,在程序中定义一个chuli方法;参照教材代码,添加

button2、button3按钮单击事件,实现照片的上下翻页。7.4按日期查询校园安防数据【知识提炼】

SqlDat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论