1.24k likes | 1.39k Views
工作任务五 后台数据库访问技术的实施. 子任务一:用户登录及管理功能窗口. 涉及到的知识点: ADO.NET 中的各种数据库对象. 掌握的内容: 1 利用 oledb 相关对象连接至 ACCESS 数据库 2 利用 SQL 相关对象连接至 SQL SERVER 数据库 连接 users 数据表 单击确认按钮能判断用户名和口令是否在数据库中存在. ADO 简介. ADO.NET 是由微软 Microsoft ActiveX Data Object(ADO) 升级发展而来的。是一种 .NET 中创建分布式数据共享程序的开发接口。
E N D
工作任务五 后台数据库访问技术的实施
子任务一:用户登录及管理功能窗口 涉及到的知识点:ADO.NET中的各种数据库对象 掌握的内容: 1 利用oledb相关对象连接至ACCESS数据库 2 利用SQL相关对象连接至SQL SERVER数据库 • 连接users数据表 • 单击确认按钮能判断用户名和口令是否在数据库中存在
ADO简介 ADO.NET是由微软Microsoft ActiveX Data Object(ADO)升级发展而来的。是一种.NET中创建分布式数据共享程序的开发接口。 ADO.NET的数据存取API提供两种数据访问方式,分别用来识别并处理两种类型的数据源,即SQL Server7.0(及更高的版本)和可以通过OLE DB进行访问的其他数据源。
要求一 利用oledb相关对象连接至ACCESS数据库 项目任务:连接d:\student.mdb数据库 第一步:引用Access数据库的命名空间 第二步:声明一个OLEDB或SQL连接对象 第三步:为连接对象设置连接字符串。 第四步:打开数据库连接 第五步:关闭数据库连接
第一步:引用Access数据库的命名空间 步骤: 选择项目名称——右键“属性”——“引用”标签——system.data.oledb 知识点一:ADO.NET的名称空间 1.SQL对象存在的命名空间: System.data.sqlclient 2.Oledb对象存在的命名空间 System.data.Oledb
ADO.net依靠它的几种对象的属性与方法来完成数据库的访问。下面主要通过了解各个对象的主要属性与方法来掌握ADO.net的数据访问功能。
connection command Data Adapter DataReader DataSet 应用程序 ADO.NET的对象结构 SQL SERVER Access
设置连接对象(connection) 功能:OleDbConnection 或SQLconnection类提供了一个数据源连接,负责应用程序与数据库的连接。 步骤: 1 声明一个OLEDB或SQL连接对象 2 为连接对象设置连接字符串。 3 打开数据库连接 4 关闭数据库连接
第二步:声明一个OLEDB或SQL连接对象 ADO.net对象类在程序中使用时,需要以对象变量的形式引用,因此必须在程序通用声明模块声明该对象变量的类型。 格式: Dim 对象名 AS New Oledbconnection 或 Dim 对象名 as new sqlconnection 本例:声明一个Conn对象变量为oledb的connection对象。 Dim conn as new oledbconnection
第三步:为连接对象设置连接字符串 连接数据库的属性主要是Connectionstring属性 connectionstring属性:用于设置ADO所连接数据库的数据源信息。 格式 对象名.connectionstring= “provider=oledb数据库驱动程序; data source=access数据库打开位置” 说明:ACCESS数据源: Provider=Microsoft.Jet.OLEDB.4.0
格式 对象名.connectionstring= “provider=oledb数据库驱动程序; data source=access数据库打开位置” 例如:设置访问d盘根目录下的ACCESS数据库:student.mdb 代码: 通用声明部分: Dim conn as new oledbconnection 窗体LOAD事件: Conn.connectionstring=“provider=microsoft.jet.oledb.4.0;data source=d:\student.mdb”
第四步:打开数据库连接 Open方法 • 功能:用于打开一个到数据源的连接,即其负责创建与数据源的连接 • 格式: • 例:打开已设置好的CONN连接对象 Conn.open Connection对象名.Open()
第五步:关闭数据库连接 Close方法 • 功能:关闭Connection对象以便释放所有关联的系统资源,终止数据源的连接。 • 格式:Connection对象名.close() 例:本例中关闭conn对象 Conn.close()
项目实践:连接d:\student.mdb数据库的步骤 system.data.oledb 步骤一:引用oledb的命名空间: 步骤二:声明ACCESS连接对象。 窗体的通用声明部分: 步骤三:设置连接对象的字符串及打开连接数据库 窗体的启动事件: 步骤四:关闭数据库 窗体的结束事件: Dim conn as new oledbconnection conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data d:\student.mdb“ conn.Open() Conn.close()
要求二 利用SQL相关对象连接至SQL数据库 项目任务:连接本地服务器上的student数据库的步骤 第一步:引用sql server数据库的命名空间 第二步:声明一个SQL连接对象 第三步:为连接对象设置连接字符串。 第四步:打开数据库连接 第五步:关闭数据库连接
第一步:引用sql server数据库的命名空间 步骤: 选择项目名称——右键“属性”——“引用”标签——system.data.sqlclient
第二步:声明一个SQL连接对象 格式: Dim 对象名 as new sqlconnection 本例:声明一个Conn对象变量为sql的connection对象。 Dim conn as new sqlconnection
第三步:为连接对象设置连接字符串 SQL连接属性格式 对象名.connectionstring= “数据库服务器名,端口号; 数据库名;uid=用户名;pwd=口令” 例:连接本地服务器jzit-111,用户名为SA,密码为123的SQL数据库students。 conn.ConnectionString = "server=jzit-111;database=students;uid=sa;pwd=12345“ Sql2005中本地服务器表示方法: Server=localhost Server=服务器名\sqlexpress
第四步:打开数据库连接 Open方法 • 功能:用于打开一个到数据源的连接,即其负责创建与数据源的连接 • 格式: • 例:打开已设置好的CONN连接对象 Conn.open Connection对象名.Open()
第五步:关闭数据库连接 Close方法 • 功能:关闭Connection对象或RecordSet对象以便释放所有关联的系统资源,终止数据源的连接。 Connection对象名.close() 例:本例中关闭conn对象 Conn.close()
项目实践:连接d:\student.mdb数据库的步骤 system.data.sqlclient 步骤一:引用sql的命名空间: 步骤二:声明ACCESS连接对象。 窗体的通用声明部分: 步骤三:设置连接对象的字符串及打开连接数据库 窗体的启动事件: 步骤四:关闭数据库 窗体的结束事件: Dim conn as new sqlconnection conn.ConnectionString = "server=127.0.0.1,1433;database=students;uid=sa;pwd=12345" conn.Open() Conn.close()
1、Connection对象 2、dataadapter 3 填充DataSet对象: 查询表的副本 要求三 连接users数据表 ADO.NET连接到数据表需要用到DataAdapter对象,并且。DataAdapter类并不真正存储任何数据,而是作为DataSet类和数据库之间的桥梁。其可以设置为包含要执行的SQL语句或者存储过程名,到指定数据源中读写数据。 服务器 数据库 应用程序 表1 表2 表3
服务器 数据库 应用程序 表1 表2 表3 2、dataadapter 3 填充DataSet对象: 查询表的副本 第一步:利用dataadapter连接远程数据库中的表。例: Select * from student Select * from student where 性别=‘男’ 第二步:将查询结果填充至本地机的dataset副本表中
利用Select * from student语句填充的DATASET副本 利用Select * from student where 性别=‘男’语句填充的DATASET副本
第一步:利用dataadapter连接远程数据库中的users表第一步:利用dataadapter连接远程数据库中的users表 功能:在数据库与DataSet对象之间传递数据。 步骤: 1 声明一个DataAdapter对象 2 指定dataAdapter对象的查询字符串。 3 设置DataAdapter对象的查询字符串及绑定至哪一个活动连接对象上。
步骤一:声明一个DataAdapter对象 格式: Dim 对象名As New SqlDataAdapter 或 Dim 对象名As New OleDBDataAdapter 例:声明一个连接users表的SQL类的dataadapter对象da Dim da as new sqldataadapter
步骤二 指定dataAdapter对象的查询字符串 功能:用来确定DataSet 副本表中的数据集合。 • 声明字符串变量selstr Dim selstr as string • 将查询字符串赋值为变量 Selstr=“select语句” 例:指定一个连接users表的查询字符串 Dim selstr as string Selstr=“select * from users”
步骤三 设置查询字符串及活动连接对象 • 格式: dataadapter对象名= New SqlDataAdapter(查询字符串,连接对象) 说明: 查询字符串:用来确定编辑的数据集合 连接对象:用于将DATAADAPTER对象连接到指定服务器的数据库中。要求该连接对象必须是已打开的活动连接。 例:连接至USERS表中 DA=new sqldataadapter(selstr,conn)
项目实践:连接至users数据表的步骤 system.data.sqlclient 步骤一:引用sql的命名空间: 步骤二:声明ACCESS连接对象、dataadapter对象和字符串变量。 步骤三:设置连接对象、dataadapter对象,并打开连接数据库 窗体的启动事件: Dim conn as new sqlconnection Dim da as new sqlDataAdapter Dim selstr as string conn.ConnectionString = “server=127.0.0.1,1433;database=students;uid=sa;pwd=12345" conn.Open() Selstr =“select * from users” Da=new sqldataadapter(selstr,conn)
查询 操作完成上传 修改 删除 第二步:将查询结果填充至本地机的dataset副本表中 DataSet是ADO.NET的核心。DataSet是一个存在于内存中的数据库,也就是说它是离线的,并没有同数据库建立即时的连线。在ADO.NET中,在DataSet中可以包含任意数量的DataTable(数据表),且每个DataTable对应一个数据库的数据表. 对数据进行的各种处理都可以直接DATASET中完成,不必与数据库一直保持连接,当处理完成后,再将数据的更改传回数据源。。 远程服务器 内存: DataSet对象 本地机
步骤一:声明dataset对象 Dim DS as new DataSet 步骤二:填充由sqldataadapter对象从数据库中检索的数据 Dataadapter对象.fill(Dataset对象,表名) 例:将dataadapter对象填充至本地机的dataset副本表中 Da.fill(DS,”users”) 扩展:表名可以是原始表名也可以用别名替代 上例也可写为:da.fill(ds,”a”) 意思为:users表用别名a替代。
数据库连接知识小结: 步骤如下: 窗体通用声明部分: 1 声明一个命名空间; 2 声明一个sql或oledb类的connection对象; 3 声明一个sql或oledb类的dataadapter对象; 4 声明一个dataset对象; 5 声明一个字符串变量,以确定查询的字符串; 窗体启动事件或其他事件中: 6 设置connection连接对象的字符串,并打开数据库连接; 7 设置dataadapter对象的查询字符串及活动连接对象; 8 将dataadapter对象填充至本地机的dataset副本表中
小试身手! 一.当前文件夹中有一名为student的ACCESS数据库文件,要求程序启动时能访问其中的student表。 二.在名为jzit-100的服务器中,有一名为students的数据库,访问用户SA,口令12345,要求程序启动时能访问其中的course表。
要求四单击确认按钮能判断用户名和口令是否在数据库中存在要求四单击确认按钮能判断用户名和口令是否在数据库中存在 查询用户名和口令可采取两种方法: 方法一:利用dataview类的FIND方法查找 方法二:直接修改dataadapter的查询字符串查询结果。
方法一:利用dataview类的FIND方法查找 步骤: 第一步 查询用户名是否存在(用户名字段) 第二步 查询到的用户名的口令是否正确(密码字段)
第一步 查询用户名是否存在(用户名字段) 步骤: 1 声明一个dataview类的对象 2 为dataview对象设置副本表的自定义视图 3 为dataview对象包含的数据进行排序 4在DataView搜索指定的数据行
第一步 查询用户名是否存在(用户名字段) 步骤1 声明一个dataview类的对象 Dim 对象名 as new dataview() 例:声明一个名为dataview对象DV Dim dv as new dataview()
第一步 查询用户名是否存在(用户名字段) 步骤:2 为dataview对象设置副本表的自定义视图 用于确定数据视图对象来自于哪一个副本表 格式: dataview对象= dataset对象.Tables(表名或索引号).DefaultView 或Dataview对象.table=dataset对象.tables(0) 本项目:设置视图对象来自于ds对象的users表,表别名a 事件: “确认”按钮的CLICK事件;Dv=ds.tables(“a”).defaultview或 dv.table=ds.tables(“a”)
第一步 查询用户名是否存在(用户名字段) 步骤:3 为dataview对象包含的数据进行排序 分析:查询用户名是否存在,因此排序的字段为用户名 格式: Dataview对象.sort=排序字段 本项目:按用户名字段进行排序 说明:因为本步骤是查询用户是否存在,所以应按照用户名字段进行排序 dv.Sort = "用户名"
i值 0 1 -1 第一步 查询用户名是否存在(用户名字段) 步骤4 在DataView搜索指定的数据行 解决方法:只要找到用户名所在的行号即可。因此需要设置一个变量存放查找到的行。 变量值为-1表示指针移到表的末尾; 变量值为除了-1之外的数字表示指向一个具体的行。
查询abc用户 i=1 查询aaa用户 i=-1
i值 0 1 -1 提示出错信息 返回重新输入 • 操作过程: • 1 声明一个存放行号的整型变量 • Dim I as integer • 在DataView搜索指定的数据行 ,并将行号赋值给变量 • i=dataview对象.fin(“指定条件”) • 3 判断有否找到所需记录。 真 假 If i=-1 then Msgbox(“用户名不存在,请重新输入”) Txtuser.focus() Exit sub endif i=-1 继续判断密码是否正确
小结 查询用户名是否存在代码如下 1 声明一个dataview类的对象 Dim dv as new dataview() 事件:确认按钮的click事件 2 为dataview对象设置副本表的自定义视图 Dv=ds.tables(“a”).defaultview 3 为dataview对象包含的数据进行排序 dv.sort=“用户名” 4在DataView搜索指定的数据行 Dim I as integer i=dv.find(txtuser.text) If i=-1 then Msgbox(“用户名不存在,请重新输入”) Txtuser.focus() Exit sub endif
第二步 用户名存在前提下判断口令是否正确 i值 分析: 只需要判断已找到的用户名所在行的密码字段值和文本框中输入的信息相等即可。 0 步骤: 1 获取字段值 Dataset对象.tables(“表名”或索引号).rows(行号).item(“字段名”或索引号) 例:ds对象中student表第1行的学号字段值(第一个字段) 格式一:Ds.tables(“student”).rows(0).item(“学号”) 格式二:ds.tables(“student”).rows(0).item(0)
试试看: 有一dataset对象名为ds1,其包含一个users表,该表有如下字段:用户名、密码、用户类型、问题和答案。请写出获取下列字段值的代码: 1 第5条记录的问题信息 2 第8条记录的密码值 3 ds1.tables(0).rows(10).item(2)
密码判断步骤: 1 获取密码字段值 ds.tables(0).rows(i).item(“密码”) 2 判断该值与输入的密码是否相等 If ds.tables(0).rows(i).item(“密码”)<>txtpwd.text then Msgbox (“口令不正确,请重新输入”,1,”口令出错”) Txtpwd.focus Exit sub End if Main.show() Me.hide()
数据库连接步骤 1 声明OLEDB对象变量. oledbconnection、dataadapter、dataset、dataview 2 连接数据库 连接对象.connectionstring 连接对象.open() 3设置dataadapter对象的查询字符串及活动连接对象 dataadapter对象=new oledbadapter(查询字符串,连接对象) 4 将dataadapter对象填充至本地机的dataset副本表中 Dataadapter对象.fill(dataset对象,”表名”)
判断用户名和口令是否正确 5 利用dataview对象判断用户名是否存在 dataview对象.table=dtaset对象.tables(0) dataview对象.sort=“排序字段” dim I as integer ‘存储行号的变量 i=dataview对象.find(“查找字符串”) if i=-1 then 提示出错信息 6 在用户名存在情况下判断口令是否正确 if dataset对象.tables(0).rows(i).item(“密码”)<>输入的口令 若不相等,则提示出错信息,重新输入 若相等,则进入主界面,关闭登录窗体。
课堂练习 要求: 单击查询按钮,能完成如下操作: 1、判断口令是否存在,不存在则提示出错信息,返回重新输入; 2、存在,则在下面的TEXT文本框中显示该用户名所对应的密码、用户类型、密码提示问题及答案。