第7章利用ADO.NET 进行数据访问.

Slides:



Advertisements
Similar presentations
第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
Advertisements

ADO.NET – 连接数据库. 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C#
教育技术装备统计系统 使用培训 教育部基础教育司 教育部教育管理信息中心.
主讲:史治平 地址:四川电大计算机教研室 电话:
第21章 .NET报表设计 (时间:1.5次课,3学时).
第13章 数据库的基本应用 Visual Basic 程序设计教程.
十一 ASP对数据库的访问.
第八章 DataGrid 與 DataTable 瀏覽器 DataTable DataGrid 存取 顯示表格 暑資碩三 房玄博 報告.
ASP.NET 網頁製作教本 – 從基本語法學起
ADO .NET 簡介.
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
文科计算机小公共课规划教材 Access 程序设计.
数据库管理软件 Access 2003的使用 安丘市职业中专 雷云龙 1.
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
第七章、RFID WinCE系統開發 本章針對RFID系統中的行動裝置架構開發方式進行介紹,這裡所指的行動裝置指的是使用Windows Mobile作業系統的個人數位助理PDA或是手機而言,本章內之範例可以在此平台上運作無虞。主要說明使用VS.NET 2008平台開發與RFID結合的Windows.
資料庫程式設計 VB資料庫設計簡介 週次:4 建國科技大學 資管系 饒瑞佶.
Visual C# 2010 程式設計經典 第15章 ADO .NET與資料工具.
課程名稱:資料庫系統 授課老師:李春雄 博士
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
Chapter 12 T-SQL 語法與 ASP.NET.
第15章 数据报表与数据图表.
ADO.NET.
課程名稱:資料庫系統 授課老師:李春雄 博士
第20章 LINQ 資料查詢技術 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或拷貝.
主 讲 教 师:陆有军 Web技术与应用 第六章 ADO.NET 主 讲 教 师:陆有军
課程名稱:資料庫系統 授課老師:李春雄 博士
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
第6章 ADO.NET数据访问接口 6.
上述代码规范了 INSERT 语句的编写规范,其中:
第2章 ADO.NET 2.0概述.
第十四章 資料庫應用程式 14.1 ADO.NET簡介 14.4 資料的單筆巡覽、新增、 修改、刪除
SQL Server 2000 数据库入门.
資料庫程式設計 VB資料庫設計簡介 週次:2 建國科技大學 資管系 饒瑞佶.
VB如何存取資料庫 ? 資料庫 資料儲存 資料庫引擎 資料庫引擎 Jet 讀取、寫入與修改 資料控制項 資料庫存取物件(ADO) 使用者介面.
第7章 ADO.NET操作SQL Server数据库
第8章 数据的排序、搜 索和过滤.
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
数据保护技术(完整性、并发性、安全性和数据库恢复)
讲课人:王璞 浙江工商职业技术学院.
第9章 事务.
5.5.1 存储过程的优点 ① 事务处理 ② 速度和性能 ③ 过程控制 ④ 安全性 ⑤ 减少网络流量和通信 ⑥ 模块化
5.1.1 使用 ExecuteReader()操作数据库
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
ASP.net 企业级应用开发 信息工程系:罗明刚.
1 创建SqlDataSouce控件 数据源控件(SqlDataSource)
第二十五章 應用Internet Express的程式開發
操作数据库 C#程序设计课程组.
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
C# 程序设计教程 同济大学计算机系基础学科组
Connection对象 访问数据库的第一步是建立连接,只有建立连接,才可能实现 在数据库和应用程序之间移动数据。 ADO提供了连接对象:
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
数据库技术与应用 (开学篇) 同济大学.
第五讲 酒店客房管理系统(一) 教育部“十二五”职业教育国家规划教材
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
SQL Server Mobile 2005 程序开发(三)
第1章 SQL Server 2005概述 教学提示:SQL Server 2005是微软的下一代数据管理和分析解决方案,它给企业级应用数据和分析程序带来更好的安全性、稳定性和可靠性,使得它们更易于创建、部署和管理,从而可以在很大程度上帮助企业根据数据做出更快、更好的决策,提高开发团队的生产力和灵活度,以及在减少总体IT预算的同时,能够扩展IT基础架构以更好地满足多种需求。
CS, ZJU 4/18/2019 Chapter 7 数据库.
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
第 10 章 ADO.NET與XML.
第8章 ADO组件的使用 本章主要内容: TADOConnection组件的使用 TADOCommand组件的使用
ASP.NET实用教程 清华大学出版社 第9章数据库应用 教学目标 教学重点 教学过程 2019年5月3日.
第11章 安全管理 教学提示:数据库安全是关系数据库中的非常重要的方面,包括了系统安全、数据安全、资源管理、用户管理、权限管理、角色管理、口令管理以及授权、认证、审计等相当多方面的内容。本章讲述有关数据库安全方面的知识。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server.
HOOK和数据库访问 主讲人:孙鑫
再戰DataSet.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

第7章利用ADO.NET 进行数据访问

第7章 ADO.NET的数据库访问技术 教学目的: 了解ADO体系结构,各成员的基本功能; 理解SqlCommand、SqlConnection、SqlDataAdapter、SqlDataAdapter 、DataSet的基本方法; 基本掌握SqlConnection、SqlCommand、SqlDataAdapter操作数据库的基本模式。 了解DataSet的功能特性,掌握创建与读取数据的方法;

第7章 ADO.NET的数据库访问技术 教学目的: 掌握DataSet与DataTable、DataRow和DataColumn之间构成关系; 基本掌握Datagrid的应用特性,绑定数据源的方法。 掌握SqlDataAdapter的Command型属性对象,与配置方法,Fill与Update方法; 掌握删除DataTable的行对象的方法,以及在Datagrid中编辑数据的方法,以及DataTable的行状态变化情况;

第7章 ADO.NET的数据库访问技术 教学目的: 基本掌握典型模式下的数据库更新方法。 掌握SqlDataAdapter的Command型属性对象,与配置方法,Fill与Update方法; 掌握删除DataTable的行对象的方法,以及在Datagrid中编辑数据的方法,以及DataTable的行状态变化情况;

第7章 ADO.NET的数据库访问技术 教学重点: SqlConnection、SqlCommand与SqlDataAdapter的基类功能与常用属性。 SqlDataAdapter数据数据方法与SqlCommand的ExecuteReader方法。 SqlDataAdapter 、SqlDataAdapter、DataSet 、DataGrid综合应用,读取数据库技术过程。 SqlDataAdapter 的Command成员与数据库操作方法,Datagrid的设置于数据编辑与提交方法。

第7章 ADO.NET的数据库访问技术 教学难点: 理解数据库连接、SQL操作的ADO组件实现模式。 理解SqlDataAdapter 、SqlDataAdapter、DataSet 、DataGrid典型应用模式。 在Datagrid中编辑数据以及典型模式下的应用关键字是现行删除方法。

ADO.NET数据访问 Microsoft公司用于访问多个提供程序中数据的Microsoft策略称为通用数据访问。通用数据访问的目标是可从任意类型计算机上的任意应用程序中访问任意类型的数据。数据源可包括关系数据库、文本文件、电子数据表、电子邮件或地址簿,数据可被存储在台式机、局域网、大型机、内联网或Internet上。

ADO.NET的优点 (1)互用性:ADO.NET使用XML为数据传输的媒质。 (5)可扩展性:ADO.NET鼓励程序员使用Web方式,由于数据是保存在本地缓存中的,不需要解决复杂的并发问题。

ADO.NET概述 链接到ADO.NET的体系结构图 {.NET Data Provider 、DataSet } .NET Data Provider作为ADO.NET的连接和数据存取层,能够向它的另一个成员DataSet提供来自数据源的数据。 DataSet是ADO.NET的数据处理核心,它像数据库一样允许内部存放多个表对象,表由记录和数据字段组成,它包含主键、外键,表间也可建立关系,支持多个数据源、XML数据的存取以及数据集成,是客户端的高性能数据缓存区。在离线状态下,数据集能够独立接受应用程序对数据的增、删、改操作, 并可通过DataAdapter对象更新数据库。

使用ADO.NET开发数据库应用程序的步骤 建立Connection对象与数据源的连接。 使用Command对象执行对数据源的操作,通常使用SQL命令。 使用DataAdapter、DataSet等对象对数据进行操作。 利用DataGrid等控件显示操作结果。

管理支持程序与对象 .NET框架中的管理支持程序用于连接数据库、执行命令和获取结果。 这些结果既可以被DataReader直接处理,也可以通过DataAdapter放置在ADO.NET DataSet对象中以特别的方式向用户显示,还可以将数据和多个数据源结合起来在层级之间传送。 管理支持程序必须在连接状态下才能完成数据库的交互任务。

.NET 数据提供者 .NET 数据提供者包含一组数据提供者对象,用于与特定的数据源通信。 数据提供者命名空间 说明 System.Data.SqlClient 支持SQL Server 7.0 及以上版本。 System.Data.OleDb 支持OLEDB数据源,如:Microsoft Access 和SQL Server 7.0以前版本。 System.Data.Odbc 支持直接访问 ODBC 数据源 System.Data.OracleClient 支持Oracle提供的.NET Framwork Beta1数据提供者。

管理支持程序中的类 Connection OLE DBConnection SQLConnection 类 的 类 型 在 OLE DB.NET管理中的名称 在 SQL Server.NET 中的名称 功 能 说 明 Connection OLE DBConnection SQLConnection 建立与数据库的连接,非常类似 于 ADO 中的 Connection 对象 Command OLE DBCommand SQLCommand 连接到数据库时执行的操作。在概念上类似于 ADO 中的 Command 对象,但包含一些新功能 DataReader OLE DBDataReader SQLDataReader 包含执行查询操作时数据库的数据流 DataSetCommand OLE BDataAdapter SQLDataAdapter 在数据库和 DataSet 之间来回传输数据

.NET 数据提供者 ⑴数据提供程序 .NET数据提供程序针对两类数据源分为SQL 、OLE DB两组,各有四个对象: ①数据库连接对象Connection(OleDbConnection 、SqlConnection) 提供数据源(库)的连接,针对不同的数据库有不同的连接对象; ②数据库命令对象Command(OleDbCommand 、SqlCommand) 提供存取数据库的命令(SQL 包括:Select 、Insert 、Delete 、Update)

.NET 数据提供者 ③数据库适配器DataAdapter(OleDbDataAdapter 、SqlDataAdapter) Connection内含两个主要成员,Connection对象与一组Command对象,通过构造函数可以为这两个对象赋值。它可以为DataSet装载表数据。 ④数据库阅读器DataReader: 通过Command执行SQL查询命令提供一个向前的数据流。可供应用程序读取。

.NET 数据提供者 ⑵数据集组件(DataSet) 数据集对象相当于内存中的一个数据库,可以包含若干个表对象、与关联对象。它可以接收DataAdapter组件检索到的数据,在通常应用模式下,它的某一个表对象可以作为一个数据格栅控件的数据源。

.NET 数据提供者 一、SQL Server .NET数据提供者 ⑴ SqlConnection类 SqlConnection类用于创建与SQL Server 数据源的连接,其构造函数为: SqlConnection(connectionString As String ) ConnectionString是用于打开 SQL Server 数据库的连接字符串,也称数据库连接串。

.NET 数据提供者 ①使用当前的 Windows 帐户登录数据库方式 Dim connectionString = "server=yjs; Integrated Security=SSPI; database=student" ②使用数据库服务器命名的SQL Server 登录ID和密码登录数据库方式 Dim connectionString = "server=yjs; uid=sa; pwd=1; database=student" 应用数据库连接串创建连接对象的语法示例如下: Dim MyConnect SqlConnection =New SqlConnection(connectionString)

.NET 数据提供者 ⑵ SqlCommand类 SqlCommand的对象用于执行一个SQL 语句或存储过程,其构造函数为: SqlCommand(cmdText As String,connection As SqlConnection) 其中:cmdText是一个SQL命令字符串或是已存在的存储过程名;connection是SqlCommand实例使用的连接对象。

.NET 数据提供者 例如: Dim cmdText="Select Name,Chinese,Arithmetic,English From Grade_Tab " Dim MyCom As SqlCommand = New SqlCommand(cmdText, MyConnect) 其中:MyConnect是一个有效的SqlConnection对象

.NET 数据提供者 ①常用属性 属性CommandText,用于获取或设置需要对数据源执行的 SQL 语句或存储过程名。 属性Connection,用于获取或设置当前实例对象使用的 SqlConnection对象。 ②常用方法表 SqlCommand 提供了四个ADO.NET中最重要的操作数据库方法,如表2所示。 链接表2

7.2 .NET 数据提供者 ⑶ DataAdapter DataAdapter也称适配器,它用于连接数据源和DataSet。 ①对于使用SQL Server .NET数据提供者 SqlDataAdapter(SelectText As String SelectConn As SqlConnection) ②对于使用OLEDB .NET数据提供者 OleDbDataAdapter(SelectText As String SelectConn As OleDbConnection)

7.2 .NET 数据提供者 SelectText是将要由该对象的 SelectCommand 属性使用的 SQL Select 语句或存储过程。 SelectConn表示该对使用的连接对象。 以yjs为数据库服务器,并假设student数据库中存在student表,应用SQL Server .NET数据提供者创建一个DataAdapter的实例对象Da: 查看代码链接

7.2 .NET 数据提供者 DataAdapter的常用属性如下表所示 : 属性 说明 DeleteCommand 获取或设置一个SQL 语句或存储过程,用于在数据源中删除记录。 InsertCommand 获取或设置一个SQL 语句或存储过程,用于在数据源中插入新记录。 SelectCommand 获取或设置一个SQL 语句或存储过程,用于在数据源中选择记录。 UpdateCommand 获取或设置一个SQL 语句或存储过程,用于更新数据源中的记录。

7.2 .NET 数据提供者 ⑷ SqlDataReader SqlDataReader用于创建一个连续的、表的记录行流,通过它的类方法可依序读取各记录的字段值,是获取数据库数据的主要方法。创建该对象使用SqlCommand类的ExecuteReader 方法。例如: Dim MyReader As SqlDataReader = MyCom.ExecuteReader() 注:MyCom是一个有效的SqlCommand实例对象。

7.2 .NET 数据提供者 ①SqlDataReader的常用属性如下表所示: 属性 说明 HasRows 获取一个Int32型值, FieldCount 获取当前行中的列数。 Item 在给定从零开始的索引号情况下, 获取指定列的值。

7.2 .NET 数据提供者 ②SqlDataReader的常用方法如下表所示: 方法 说明 GetFieldType 在给定从零开始的索引号情况下,获取当前列数据对象的类型。 GetDecimal 在给定从零开始的索引号情况下,获取指定列的 Decimal形式的值。 GetInt32 在给定从零开始的索引号情况下,获取指定列的 32 位有符号整数形式的值。 GetString 在给定从零开始的索引号情况下,获取指定列的字符串形式的值。 GetName 在给定从零开始的索引号情况下,获取指定列的名称。 Read 使流的读取位置前进到下一记录。流的初始位置在第一条记录前面,若流存在可读行,Read返回True;否则返回False。它可用于控制连续读取流的操作。

7.2 .NET 数据提供者 如果在应用程序使用SQL Server .NET数据提供者,需要在程序的开始部分声明对SqlClient命名空间的引用,代码为: Imports System Imports System.Data.SqlClient

7.2 .NET 数据提供者 二、应用.NET 数据提供者访问数据库的实例 窗体中包含一个ListView控件,它工作在Details方式下,用以显示学生成绩表。应用程序的全部代码均表现在按钮的单击事件过程中。“读取”按钮用于数据读取;“计算”按钮用于数据计算。 数据库环境: 数据库服务器 yjs; 数据库 student; 数据表 Grade_Tab。 链接到运行结果图 {内容通过媒体演示教学}

7.3 数据集 一、DataSet层次结构图 图1 DataSet 层次对象模型 数据集 表集合 表 行集合 列集合 行 列 约束集合 约束 关系集合 关系

7.3 数据集 ⒈创建DataSet实例对象与数据装载 创建DataSet 对象的构造函数不需使用任何参数。 例如:Dim MyDataSet As New DataSet VB.NET提供两种为DataSet装载数据的方法: 一种是应用前面提到的DataAdapter方法。 另一种是从XML文件读取数据填充。

7.3 数据集 Fill方法语法格式: Fill(IdataSet As DataSet,SrcTable As String)As Integer 其中:IdataSet表示需要填充数据的数据集;SrcTable是数据集中表的标识,通过它可以访问数据集中的表,它可以是数据集中已经存在的表,也可是一个新表名称。 返回值:在 DataSet 中成功添加或刷新的表行数。

7.3 数据集 例如: Dim MyconnStr = "Integrated Security=SSPI;database=student;server=yjs" Dim cmdText = "Select Name,Chinese,Arithmetic,English From Grade_Tab " Dim MyConnect As SqlConnection = New SqlConnection(MyconnStr) Dim Da As SqlDataAdapter = New SqlDataAdapter(cmdText, MyConnect) Dim MyDataSet As New DataSet '创建数据集对象 MyDataSet MyDataAdapter.Fill(MyDataSet, "Grade_Tab") '在数据集中创建并装填一个表

7.3 数据集 ①Columns属性 Columns属性表示当前表的列集合,通过0起始的索引号可访问表的列成员。例如通过以下程序可获得表的第一个列名: Dim MyTab As DataTable MyTab = MyDataSet.Tables("Grade_Tab") Dim TabStr As String =DataTable.Columns(0).ToString() '获取第1个列名

7.3 数据集 ②Rows属性 Rows属性表示当前表的行集合,通过0起始的索引可访问表的行对象。 例如,以下代码可获取表的总行数,并创建了一个行对象MyRow: Dim MyTab As DataTable MyTab = MyDataSet.Tables("Grade_Tab") Dim RowCount As Integer = MyTab.Rows.Count '获取表的行数 Dim MyRow As DataRow = MyDataSet.Rows(0) '使用0行创建一个行对象 MyRow

7.3 数据集 ③PrimaryKey 属性 PrimaryKey 属性表示主键列集合。其中的列对象必须是Columns的成员。例如,以下代码为前面示例中MyTable设置一个单列主键: MyTable.PrimaryKey = New DataColumn() {MyTable.Columns("id")} 主键用于惟一标识表的行对象,它也可用于在表中查找指定行,Rows的Find方法能够在表中找到指定关键字的行对象,例如: Dim delRow As DataRow = MyTable.Rows.Find("12")

7.3 数据集 ⑵ DataRow的常用属性与方法 DataRow的常用属性多数针对行对象的访问,包括行数据的访问和行状态的访问,DataRow的常用方法大都针对行对象的操作。 ①Item属性 通过DataRow的Item属性可获取或设置存储在指定列中的数据。Item是行对象的列集合,可通过0起始的索引号或列名来访问行中指定列的数据。例如: Dim MyTab As DataTable '声明表对象 MyTab = MyDataSet.Tables("Grade_Tab") '初始化表对象

7.3 数据集 ②RowState属性如下表所示: RowState属性表示当前行的状态。 属性 说明 Added “已添加” 状态。该行已被添加到集合中,但未提交或未结束编辑。 Deleted “已删除”状态。该行已经被删除,但未被移除所在表。 Detached 该行已被创建,但未被添加到集合中或已经从集合中被移除。 Modified 该行已被修改,但编辑未结束或未提交。 Unchanged “未更改”状态。该行自本次读取或上次被保存提交以来尚未更改。

7.3 数据集 ③DataRow的常用方法 AcceptChanges方法用于结束当前行的编辑状态并执行保存。如果该行的 RowState 是“已添加”或“已修改”,则执行该方法后,RowState 变成“未更改”。如果 RowState 是“已删除”,执行该方法后,它在表中被移除。

7.3 数据集 Delete方法用于删除当前行对象,行被删除后,它的RowState由Unchanged变成Detached。在执行 AcceptChanges 之前,它一直保持这个状态。如果对其执行AcceptChanges方法,则该行被真正从表中删除。但如果对该行执行 RejectChanges 方法,该行则被取消“删除”,行状态又变回Unchanged。

7.3 数据集 RejectChanges方法可拒绝自初始装载数据或上次保存数据以来,对数据行进行的所有更改。如果 RowState 是“已删除”或“已修改”,则该行恢复为其以前的值,RowState 变成“未更改”。如果 RowState 是“已添加”,该行将被移除表。例如: MyTab = MyDataSet.Tables("Grade_Tab") Dim MyRow As DataRow = MyTab.Rows(1) MyRow.Delete()        '删除MyRow行,这时MyRow 的状态为Deleted MyRow. AcceptChanges() '保存提交MyRow行,这时MyRow 被移除所在表 MyTab.Rows(0).Item(4)=100 '修改行中的列值,这时MyRow 的状态为Modified MyTab. RejectChanges() 'MyRow 的状态回到Unchanged

7.3 数据集 ⒊DataTable操作实例 下面的程序创建一个表对象myTable,它包含ID、Name、Sex、Average四个列。程序分为两个代码块,主调程序是一个按钮的单击事件过程。它调用函数过程创建了myTable,并为该表添加了两个新行。又为每个新行的各列赋值。 链接到主调程序代码: 链接到函数过程代码:

7.3 数据集 二、应用DataSet访问数据库 下图描述了应用.NET Data Provider、DataSet和界面控件访问数据库的模式,这种模式下,用户可通过界面控件浏览、编辑或更新数据库。 DataGrid控件

7.3 数据集 ⒈DataGrid控件 DataGrid 控件通过列表方式显示数据,最简单的应用方法是,为DataGrid绑定一个单表数据源,然后在网格中显示数据。它的SetDataBinding方法用于绑定各种数据源,例如,DataSet的表。 ⑴ DataGrid控件的外观设置 通过DataGrid的属性可以设置控件的外观。

7.3 数据集 ⑵ 为DataGrid控件绑定数据源 DataGrid控件绑定数据源有用两种方法。 ①使用SetDataBinding方法设置DataGrid的数据源 该方法将DataSet中的某个表指派给DataGrid对象,作为数据源。 例如: DataGrid1.SetDataBinding(MyDataSet, "Grade_Tab")

7.3 数据集 ②使用DataSource属性设置DataGrid的数据源 通过DataSource 属性可以获取或设置DataGrid的数据源。但这个属性值必须是有效数据源,如DataTable、DataSet等。它不能是字符串形式的表名。 以下设置是有效的: DataGrid1.DataSource = MyDataSet.Tables(0) 以下设置是无效的: DataGrid1.DataSource = MyDataSet.Tables(0).TableName

7.3 数据集 ⑶ 访问DataGrid中的数据 DataGrid 控件中的行表示数据源表中的一个记录,它的列对应表中的字段。使用Items可以编程的方式控制、访问 DataGrid的单元值。 例如,访问DataGrid1的数据: Dim DecVal As Decimal = DataGrid1.Item(0,3) '读取DataGrid1中0行3列的数据 DataGrid1.Item(2,3)=97.5 '为DataGrid1中2行3列单元赋值

7.3 数据集 通过DataGrid的CurrentRowIndex属性可以获取或设置 DataGrid当前选定行的索引号。通过CurrentCell属性可获取或设置具有焦点的单元格对象,它也能返回当前选定单元的行、列索引号。 例如: Dim CRow As Integer=DataGrid1.CurrentRowIndex '当前选定行的索引 Dim CCol As Integer=DataGrid1.CurrentCell.ColumnNumber() '当前单元的列索引 Dim CRow As Integer=DataGrid1.CurrentCell.RowNumber() '当前单元的行索引

7.3 数据集 ⒉应用DataGrid显示DataSet数据的实例 以student数据库的Grade_Tab表为数据源,创建如图所示的窗体,通过窗体中DataGrid控件显示数据源的数据。{通过媒体演示教学}

7.3 数据集 ⒊应用DataSet更新数据库的方法 ⑴ 设置DataAdapter的Command型属性 方法: 用.NET数据提供者提供的CommandBuilder类方法,它能自动生成其他三个修改类Command对象。

7.3 数据集 使用CommandBuilder为DataAdapter设置Command属性需要创建CommandBuilder对象。 应用SQL 数据提供者的创建方法为: Dim MyCb As SqlCommandBuilder = New SqlCommandBuilder(MyAdapter) 应用OLEDB 数据提供者的创建方法为: Dim MyCb As OleDbCommandBuilder= New OleDbCommandBuilder(MyAdapter)

7.3 数据集 应用SqlCommandBuilder类方法应注意以下两点: ①DataAdapter对象必须已经设置了SelectCommand属性。 ②相关物理表存在主键,并且在Select语句中使用了这个主键列。 ⑵ 在DataGrid中编辑数据 当DataGrid处于非只读状态时,DataGrid接受数据编辑,并能及时反映给数据源。

7.3 数据集 ⑶ 删除DataGrid中行 DataGrid 的Items不提供添加或删除数据行的方法。但由于DataGrid与数据源表的绑定关系,可通过删除数据源表中行对象的方法来实现DataGrid的行删除。方法如下: ①事先为数据源表设置PrimaryKey 属性,使其具有一个可用于行对象查找的主键。 ②在DataGrid中,通过Item属性读取被删除行的主键值。 ③根据删除行的主键值,在数据源表中通过Rows.Find方法找到这个行对象并删除。

7.3 数据集 ⒋应用DataSet更新数据库的实例 在界面直接进行数据修改、增加新行操作。通过按钮进行删除行、保存或放弃当前数据变更以及刷新数据等操作。此外,为优化程序的操作性能,本例动态控制DataGrid的“只读”和“修改”状态,窗体运行的最初时它被设置为“只读”,此刻“删除”、“保存”和“放弃”按钮是不可用的;单击“修改”按钮后,窗体变为“修改”状态,此刻“刷新”、“修改”和“退出” 按钮是不可用的。 链接到运行结果图 {通过媒体演示教学}

本章小结 7.1 ADO.NET概述 7.2 .NET 数据提供者 通过一个连接对象连接数据库服务器yjs的studen数据库。应用SqlCommand对象执行SQL语句并创建一个SqlDataReader对象,然后在这个对象连续读取数据并写入ListView控件。

本章小结 7.3 数据集 应用了ADO.NET的两层结构,DataAdapter的Fill方法能自动打开数据库连接并装载DataSet,数据读取结束后又能自动关闭连接。整个过程不需控制数据库连接的打开和关闭。

本章小结 实践了DataSet和DataGrid配合读写数据库的应用模式,图分层描述了这个应用结构。它分为ADO应用层和数据显示层,在ADO应用层,通过.NET数据提供者连接数据库,并将数据读入DataSet中;在数据显示层,表对象被绑定到DataGrid获得显示。在编辑状态下,可直接在DataGridUpdateFill数据绑定数据库DataSet对象Datagrid对象数据显示层ADO应用层后台数据库服务层用程序DataAdapter对象Connection对象Command对象图3 DataSet和DataGrid配合应用模式中进行数据修改和增加新行操作;通过按钮操作可进行行删除、保存或放弃变更数据的操作。 链接到DataSet和DataGrid配合应用模式图

ADO.NET的体系结构图

SqlCommand 的常用方法 方法 说明 ExecuteReader 执行返回行的命令。该方法使用 Transact-SQL sp_executesql 系统存储过程调用命令 ExecuteNonQuery 执行INSERT、DELELE、UPDATE 及 SET等SQL语句命令,并可返回影响行数。 ExecuteScalar 从数据库中检索单个值(例如一个聚合值)。 ExecuteXmlReader 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。

DataAdapter实例代码 Dim MyconnStr = "Integrated Security=SSPI;database=student;server=yjs" Dim cmdText = "Select Name,Chinese,Arithmetic,English From Grade_Tab " Dim MyConnect As SqlConnection = New SqlConnection(MyconnStr) Dim Da As SqlDataAdapter = New SqlDataAdapter(cmdText, MyConnect)

应用.NET 数据提供者访问数据库的实例 应用程序主窗体

DataTable操作实例主调程序代码 Dim myTable As DataTable '声明一个表对象 myTable = MakeTable() '实例化一个表对象 Dim myRow As DataRow '声明一个行对象 myRow = myTable.NewRow '应用myTable的新行实例化行对象 myRow.Item("ID") = 1 '为当前行的ID列赋值 myRow.Item("Name") = "黎明" myRow.Item("Sex") = True myRow.Item("Average") = 477 myTable.Rows.Add(myRow) '将myRow加入myTable myRow = myTable.NewRow '应用myTable的新行重新实例化myRow myRow.Item("ID") = 2 myRow.Item("Name") = "曙光" myRow.Item("Sex") = False myRow.Item("Average") = 523 myTable.Rows.Add(myRow) '向myTable再加入一个新行

DataTable操作实例函数过程代码 Private Function MakeTable() As DataTable Dim TempTable As New DataTable("TempTable") '创建一个新的表对象myTable Dim ID As New DataColumn("ID", Type.GetType("System.Int32")) Dim Name As New DataColumn("Name", Type.GetType("System.String")) Dim Sex As New DataColumn("Sex", Type.GetType("System.Boolean")) Dim Average As New DataColumn("Average", Type.GetType("System.Decimal")) TempTable.Columns.Add(ID) '向TempTable加入一个新列ID TempTable.Columns.Add(Name) TempTable.Columns.Add(Sex) TempTable.Columns.Add(Average) Return TempTable '返回一个表对象 End Function

应用DataSet更新数据库的实例 应用DataSet 更新数据库程序

DataSet和DataGrid配合应用模式 Update Fill 数据绑定 数据库 DataSet对象 Datagrid对象 数据显示层 ADO应用层 后台数据库服务层 层 应 用程序 DataAdapter对象 Connection对象 Command对象