第4章 在连接环境中获取数据.

Slides:



Advertisements
Similar presentations
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#
Advertisements

第7章利用ADO.NET 进行数据访问.
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
第6章 ADO.NET数据库编程.
Oracle数据库 Oracle 子程序.
第3章 数据源连接.
在PHP和MYSQL中实现完美的中文显示
ADO.NET.
主 讲 教 师:陆有军 Web技术与应用 第六章 ADO.NET 主 讲 教 师:陆有军
課程名稱:資料庫系統 授課老師:李春雄 博士
上述代码规范了 INSERT 语句的编写规范,其中:
第2章 ADO.NET 2.0概述.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
第7章 ADO.NET操作SQL Server数据库
第8章 数据的排序、搜 索和过滤.
数据保护技术(完整性、并发性、安全性和数据库恢复)
第9章 事务.
5.5.1 存储过程的优点 ① 事务处理 ② 速度和性能 ③ 过程控制 ④ 安全性 ⑤ 减少网络流量和通信 ⑥ 模块化
5.1.1 使用 ExecuteReader()操作数据库
SQL Injection.
走进编程 程序的顺序结构(二).
辅导课程六.
第7章 在断开连接的环境中 编辑和更新数据.
操作数据库 C#程序设计课程组.
第六单元 ADO.net数据库操作 劳动和社会保障部全国计算机信息高新技术考试指定教材——ASP.NET.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
C# 程序设计教程 同济大学计算机系基础学科组
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
SOA – Experiment 2: Query Classification Web Service
第五讲 酒店客房管理系统(一) 教育部“十二五”职业教育国家规划教材
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第1章 SQL Server 2005概述 教学提示:SQL Server 2005是微软的下一代数据管理和分析解决方案,它给企业级应用数据和分析程序带来更好的安全性、稳定性和可靠性,使得它们更易于创建、部署和管理,从而可以在很大程度上帮助企业根据数据做出更快、更好的决策,提高开发团队的生产力和灵活度,以及在减少总体IT预算的同时,能够扩展IT基础架构以更好地满足多种需求。
第四章 团队音乐会序幕: 团队协作平台的快速创建
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
VB与Access数据库的连接.
实验七 安全FTP服务器实验 2019/4/28.
项目二:HTML语言基础.
Web安全基础教程
ASP.NET实用教程 清华大学出版社 第9章数据库应用 教学目标 教学重点 教学过程 2019年5月3日.
数据库系统与应用实验 基于SQL Server 2005.
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
Delphi 7.0开发示例.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
JUDDI安装手册.
Presentation transcript:

第4章 在连接环境中获取数据

数据访问技术—— ADO.NET 2.0 第 6 章: 类型化DataSet 第1章: 数据库基础 第 2 章: ADO.NET 2.0概述 第 3 章: 数据源连接 第 4 章: 在连接环境中获取数据 第 5 章: 构建DataSet 第 6 章: 类型化DataSet 第 7 章: 在断开连接的环境中编辑和更新数据 第 8章: 数据的排序、搜索和过滤 第 9 章: 事务 第 10 章: ADO.NET和XML 2

目标 本章学习目标: 掌握创建和初始化Command对象的方法 掌握通过Visual Studio 2005配置Command对象的方法 掌握通过使用Command对象来执行 SQL 语句的方法 掌握创建DataReader的方法 掌握获取DataReader的属性 掌握执行DataReader的方法 掌握使用Command对象进行异步操作的方法 掌握使用Command对象查询多重活动结果集的方法 3

第4章 在连接环境中获取数据 和数据源交流的语言-- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言-- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题

SQL 在同数据源之间建立连接之后,应用程序和数据源之间的交流就包括以下两个方面。 指定应用程序所需要访问的数据 返回所访问到的数据

SQL (续) ADO.NET提供两个对象, 二者相互配合来实现应用程序和数据源之间的交流。 Command对象:包含要对数据库执行的SQL命令 DataReader对象:根据Command对象的查询结果, 按顺序获取单行数据

第4章 在连接环境中获取数据 和数据源交流的语言 --SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言 --SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 7

Command 对象 通过Visual Studio 2005创建Command对象 通过编程方式创建Command对象

通过Visual Studio 2005创建Command对象 在任意选项卡上单击鼠标右键,选择“选择项”命令, 手动加入工具箱。 1

通过Visual Studio 2005创建Command对象(续) 等待一段时间后,出现“选择工具箱项”对话框,从中找到SqlCommand对象,勾选后单击“确定” 按钮。 2 10

3 通过Visual Studio 2005创建Command对象(续) 工具箱中可看到SqlCommand控件,可以拖曳并使用它 。 3 11

4 通过Visual Studio 2005创建Command对象(续) 在窗体设计器中,拖曳一个SqlCommand控件。 4 12

5 通过Visual Studio 2005创建Command对象(续) 在“属性”窗口中,把SqlCommand对象的Name属性值改为“ cmdGetEmployees ” 。 5 13

创建Command对象的多媒体演示 多媒体演示

通过编程方式创建Command对象 通过编程方式创建Command对象的过程很简单, 只需要按照如下代码进行实例化 。 [C#] SqlCommand myCommand = new SqlCommand(); [VB.NET] Dim myCommand As New SqlCommand() 15

通过编程方式创建Command 对象 (续) 即使以上代码编译通过,也不能完成任何事情。原因如下。 1 未指定关于连接的任何信息。 2 也未指定所要执行的命令的信息。 16

1 2 例子 为了完成上述第一项任务,先来看一个例子。 4.2.2 通过编程方式创建Command对象 启动Visual Studio 2005,创建一个新的控制台应用程序,将其命名为“演示4.1” 。 2 打开Program.cs(C#)或者Module1.vb(VB.NET)类文件 。 17

例子(续) 4.2.2 通过编程方式创建Command对象 3 引入相关的命名空间。 4 创建并建立SqlConnection对象 。 18

1 2 3 总结 总结一下,可以通过以下三种方式来创建Command对象 。 代码示例C# 代码示例VB 使用无参数的构造函数来创建Connection对象的新实例,然后设置适当的属性值 。 2 使用带参数的构造函数, 并指定查询字符串和Connection对象。 3 调用Connection对象的CreateCommand()方法 。 代码示例C# 代码示例VB 19

第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 20

Command对象的属性 Command对象的属性及其描述如下表所示。 4.3 Command对象的属性 属性 描述 CommandText 要对数据源执行的SQL 语句或存储过程 CommandTimeout 在终止执行命令的尝试并生成错误提示信息之前的等待时间(单位:秒) CommandType 指示如何解释 CommandText 属性,默认值是Text Connection Command对象所要使用的Connection Parameters Parameters集合 Transaction 执行命令所在的事务(将在第7章中详细阐述) UpdatedRowSource 确定当Command对象被DataAdapter或TableAdapter的Update()方法使用时,其结果如何应用于DataRow

Command对象的属性(续) CommandText属性 CommandTimeout属性 CommandType属性 Connection属性 Parameters属性 Transaction属性 UpdateRowSource属性 设置Command对象的属性 (摘录部分内容如下)

CommandText属性(续) Visual Studio 2005中的查询生成器提供了多种方法来生成SQL语句。

CommandType属性(续) CommandType属性用来指示如何解释CommandText属性的内容 。其取值及描述如下表所示。 属性值 描述 StoredProcedure 指示CommandText属性所包含的是要执行的存储过程的名称 TableDirect 指示CommandText属性所包含的是要访问的一个表的名称,从此表中将取出所有的列和行 Text 指示CommandText属性包含的是要执行的SQL命令(此为默认值)

UpdateRowSource属性 UpdateRowSource属性的值及其描述如下。 4.3.7 UpdateRowSource属性 属性值 描述 Both 将Command对象的输出参数和第一个返回行都映射至已更改的行 FirstReturnedRecord 将第一个返回行中的数据映射至已更改的行 None 忽略所返回的任何参数或行 OutputParameters 仅将Command对象的输出参数映射到已更改的行

设置Command对象的属性 通过Visual Studio 2005设置Command对象的属性 通过编程设置Command对象的属性 26

1 设置Command对象 的属性 (续) 通过Visual Studio 2005设置Command对象的属性的步骤如下 。 在“窗体设计器”的组件托盘中,选中cmdGetEmployees 。 1 27

设置Command对象 的属性(续) 4.3.8.1 通过Visual Studio 2005设置Command对象的属性 在“属性”窗口中,选择Connection属性,单击其右侧的下拉箭头,选择曾经使用的SqlConnection数。 2 28

3 设置Command对象 的属性(续) 继续在“属性”窗口中选择CommandText属性,单击其右侧的省略号按钮 。 4.3.8.1 通过Visual Studio 2005设置Command对象的属性 继续在“属性”窗口中选择CommandText属性,单击其右侧的省略号按钮 。 3 29

4 设置Command对象 的属性(续) 在随后出现的“查询生成器”中,手动添加所需要的表。 4.3.8.1 通过Visual Studio 2005设置Command对象的属性 在随后出现的“查询生成器”中,手动添加所需要的表。 4 30

5 设置Command对象 的属性(续) 双击“员工”表,将其添加至“查询生成器”中,然后单击“关闭”按钮 。 4.3.8.1 通过Visual Studio 2005设置Command对象的属性 双击“员工”表,将其添加至“查询生成器”中,然后单击“关闭”按钮 。 5 31

6 设置Command对象 的属性(续) 选择所需要的列,单击“确定”按钮 。 4.3.8.1 通过Visual Studio 2005设置Command对象的属性 选择所需要的列,单击“确定”按钮 。 6 32

设置Command对象的属性的多媒体演示

设置Command对象 的属性 (续) 4.3.8.2 通过编程设置Command对象的属性 Command对象的大多数属性是通过简单的赋值语句来设置的,不过Parameters集合是一个例外,它所使用的是Add()方法。在下一节中将详细讨论Parameters集合。 代码示例C# 代码示例VB

第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象和ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 35

1 2 3 Command对象的参数 要在Command对象中使用参数,通常有以下三个步骤。 在命令文本或存储过程中指定参数 。 将参数添加至Command对象的Parameters集合中 。 3 设置参数值 。

Command对象的参数(续) Parameters集合提供了一系列方法对集合进行配置 。 4.4 Command对象的参数 方法 描述 Add() 将参数添加到集合中 Clear() 从集合中移除所有参数 Insert() 将参数插入集合中的指定索引位置 Remove() 从集合中移除所指定的参数

Command对象的参数(续) 通过Visual Studio 2005配置Parameters集合 通过编程方式添加并配置参数

1 2 3 配置Parameters集合 Visual Studio 2005 提供了参数集合编辑器来配置参数 。 在“窗体设计器”中,拖曳一个SqlCommand对象到窗体上 。 2 在“属性”窗口中,把Command对象的Name属性值改为“ cmdEmployeeDetails ” 。 3 选择Connection属性,在相应的下拉箭头中选择前几章中所使用过的SqlConnection1 。 39

4 配置Parameters集合(续) 选择Parameters属性,单击其右侧的省略号按钮 。 4.4.1 通过Visual Studio 2005配置 Parameters集合 4 选择Parameters属性,单击其右侧的省略号按钮 。 40

5 6 配置Parameters 集合 (续) 单击“确定” 按钮。 4.4.1 通过Visual Studio 2005配置 在弹出的“SqlParameter 集合编辑器”中,添加所需要的参数,本示例需要添加一个@EmployeeID参数 。 6 单击“确定” 按钮。 41

配置Parameters集合的多媒体演示

1 2 3 添加并配置参数 通过编程方式将参数添加至Command对象的Parameters 集合中,需遵循以下步骤 。 4.4.2 通过编程方式添加并配置参数 通过编程方式将参数添加至Command对象的Parameters 集合中,需遵循以下步骤 。 1 创建新的SqlParameter对象或OleDbParameter对象 。 2 配置参数对象的属性 。 3 调用Command对象Parameters 集合的Add()方法,将参数添加至Command对象的Parameters 集合中。 43

添加并配置参数(续) 参数对象的属性及其描述如下表所示。 代码示例C# 代码示例VB 4.4.2 通过编程方式添加并配置参数 属性 描述 ParameterName 将该属性设置为SQL命令或存储过程中的参数名,如 “@EmployeeID” DbType、SqlDbType或 OleDbType 将该属性设置为参数的数据类型。 设置SqlParameter对象的数据类型的方法有以下两种。 在DbType枚举中选择一个值赋给DbType属性 在SqlDbType枚举中选择一个值赋给SqlDbType属性 Size 设置该属性以指示参数大小,例如字符串参数中字符的个数。无需为已知且具有固定大小的数据类型(例如DbType.Int32)指定大小 Direction 设置该属性以指示该参数是只输入参数、只输出参数、双向参数还是存储过程的返回值。 该属性可设置为ParameterDirection枚举值之一: ParameterDirection.Input、ParameterDirection.InputOutput、ParameterDirection.Output或ParameterDirection.ReturnValue。默认方向为ParameterDirection.Input Value 对于只输入参数或双向参数而言,在运行该命令之前需要设置Value属性。 对于只输出参数、双向参数和存储过程的返回值而言,在运行该命令之后可以检索Value属性 代码示例C# 代码示例VB 44

设置Parameters的值 4.4.3 设置Parameters的值 在设置好Parameters集合、执行Command之前,必须为每一个Parameter设置它们的值。可以在“SqlParameter集合编辑器”中进行设置 。 45

第4章 在连接环境中获取数据 和数据源交流的语言 --SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言 --SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 46

使用Command对象来执行 SQL 语句 创建Command对象后,就可以对数据库执行命令 。 方法 描述 Cancel() 取消命令的执行 CreateParameter() 创建SqlParameter对象的新实例 ExecuteScalar() 执行命令并返回查询结果集中第一行的第一列。忽略额外的列或行 ExecuteNonQuery() 执行命令并返回受影响的行数 ExecuteReader() 执行命令并返回一个DataReader对象 ExecuteXmlReader() 执行命令并生成一个XmlReader对象 Prepare() 在 SQL Server 的实例上创建命令的一个准备(预编译)版本 ResetCommandTimeout() 将CommandTimeout属性重置为其默认值

使用Command对象来执行 SQL 语句 (续) SqlCommand 和 OleDbCommand类提供了相关的一些方法来执行命令,其中最重要的有以下四种方法: ExecuteScalar() 方法 ExecuteNonQuery()方法 ExecuteReader()方法 ExecuteXMLReader()方法

使用Command对象来执行 SQL 语句 (续) ExecuteScalar()方法 ExecuteNonQuery()方法

ExecuteScalar()方法 下面的示例显示可能需要命令返回单一值的场景。 要检索某一种特定产品的名称。可以编写SQL语句返回此产品的ProductNumber 字段。 要查找Adventure Works数据库中的产品数量。可以编写SQL 语句,使用COUNT()函数计算产品数量。 要找出某一特定类别中的产品数量并获得该类别的名称。可以编写存储过程, 使用类别ID值作为输入参数,并设置类别名称为输出参数 。 代码示例C# 代码示例VB

ExecuteScalar()方法 (续) 执行返回标量结果的查询的步骤如下。 打开一个数据库连接。 创建并初始化一个Command对象。 对该Command对象调用ExecuteScalar()方法。 将从ExecuteScalar()返回的值转换为适当的数据类型。 释放该Command对象。 关闭该数据库连接 。 代码示例C# 代码示例VB

ExecuteNonQuery()方法 4.5.2 ExecuteNonQuery()方法 当所执行的SQL命令或存储过程不返回任何数据行时,就可以使用ExecuteNonQuery ()方法。 以下示例显示了如何提高AdventureWorks数据库中某个特定产品的价格。 代码示例C# 代码示例VB

ExecuteNonQuery()方法 (续) ExecuteNonQuery ()方法的返回值是SQL命令或存储过程所影响的行数。 以下代码演示了如何执行删除数据库中表的命令。 代码示例C# 代码示例VB

第4章 在连接环境中获取数据 和数据源交流的语言-SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言-SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 54

DataReader对象及ExecuteReader()方法 要创建DataReader对象,就需要执行Command类的ExecuteReader()方法。具体步骤如下。 1 打开一个数据库连接。 2 创建并初始化一个Command对象 。 3 对该Command对象调用ExecuteReader()方法 。 55

4 5 6 DataReader对象及ExecuteReader()方法(续) 将ExecuteReader()方法的返回值赋给一个DataReader 对象。 5 编写循环语句以对该DataReader对象调用Read()方法,并且每一次从其结果集中读取一行 。 6 每循环一次,即获取希望在当前行中处理的列的值 。 56

7 8 9 10 DataReader对象及ExecuteReader()方法(续) 如果查询命令返回多重结果集,则对该DataReader对象调用NextResult()方法 。 8 执行完循环之后,释放或关闭该DataReader对象 。 9 释放该Command对象 。 10 关闭该数据库连接 。 代码示例C# 代码示例VB 57

第4章 在连接环境中获取数据 和数据源交流的语言-SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言-SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 58

使用Command对象 进行异步操作 4.7 使用Command对象进行异步操作 原本ADO.NET的Command 对象执行SQL命令的方法有ExecuteReader()、ExecuteNonQuery()、ExecuteXmlReader ()以及 ExecuteScalar ()等,在ADO.NET 2.0中,除了ExecuteScalar()方法外,其余的方法都新增了以 Begin和End关键字所嵌入的一对方法。 代码示例C# 代码示例VB 59

使用Command对象进行异步操作的多媒体演示

第4章 在连接环境中获取数据 和数据源交流的语言- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 61

使用Command对象查询 多个活动结果集 多重活动结果集 在默认情况下,在通往启用MARS的主机(例如Microsoft SQL Server 2005)的连接上, MARS是活动的。依赖于MARS技术的编码更为简单易读,并且使编程人员在开发数据集中的Web应用程序时可以减少对内存的使用, 在一定程序上消除了性能瓶颈 。 62

使用Command对象查询多重活动结果集(续) 请遵循以下步骤来建立MARS 。 1 创建一个如上所示的连接字符串 。 2 创建一个SqlConnection对象, 并使用该连接字符串对其进行初始化 。 3 使用Open()方法打开这个SqlConnection对象 。 63

4 5 6 使用Command对象查询多重活动结果集(续) 对于所要执行的查询,创建一个新的SqlCommand对象 。 使用适当的命令(如果想读取该查询结果,可以使用ExecuteReader()方法)。 6 完成后,关闭SqlConnection对象 。 64

使用Command对象查询多重活动结果集(续) 示例1: 显示在不使用MARS功能的情况下, 如何达到查询多重活动结果集。 代码示例C# 代码示例VB 65

使用Command对象查询多重活动结果集(续) 示例2: 显示在使用MARS功能的情况下, 如何查询多重活动结果集。 代码示例C# 代码示例VB 66

查询多重活动结果集的多媒体演示 多媒体演示

第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 68

小结 4.9 小结 本章介绍如何创建和初始化Command对象以及通过Visual Studio 2005配置Command对象的方法。在Visual Studio 2005中,学习配置参数集合、创建和配置Command对象参数以及使用Command对象来执行 SQL 语句。 69

第4章 在连接环境中获取数据 和数据源交流的语言-- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言-- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 70

实验 4.10 实验 参照实验手册,并在教师的指导下完成实验报告。 71

第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 第4章 在连接环境中获取数据 和数据源交流的语言 -- SQL Command 对象 Command对象的属性 Command对象的参数 使用Command对象来执行 SQL 语句 DataReader对象及ExecuteReader()方法 使用Command对象进行异步操作 使用Command对象查询多重活动结果集 小结 实验 习题 72

习题 4.11 习题 假设正在创建一个 Windows 窗体应用程序。该应用程序使用名为 cmd 的 SqlCommand 对象, 该 cmd 对象执行以下存储过程。 CREATE PROCEDURE GetPhoneList AS BEGIN SELECT CompanyName, Phone FROM Customers SELECT CompanyName, Phone FROM Suppliers END 需要将所有返回的行添加至名为 lstPhones 的 ListBox 控件, 应该使用代码段_____ 。 73

习题(续) A. [C#] SqlDataReader rdr = cmd.ExecuteReader(); do { 4.11 习题 A. [C#] SqlDataReader rdr = cmd.ExecuteReader(); do {   while (rdr.Read()) {     lstPhones.Items.Add(rdr.GetString(0) + "\t"      + rdr.GetString(1));   } } while (rdr.NextResult()); [VB.NET] Dim rdr as SqlDataReader = cmd.ExecuteReader() Do While (rdr.Read()) lstPhones.Items.Add(rdr.GetString(0) + "\t" + rdr.GetString(1)) End While Loop While (rdr.NextResult()) 74

习题(续) B. [C#] SqlDataReader rdr = cmd.ExecuteReader(); 4.11 习题 B. [C#] SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) {   lstPhones.Items.Add(rdr.GetString(0) + "\t"    + rdr.GetString(1)); } [VB.NET] Dim rdr as SqlDataReader = cmd.ExecuteReader() While (rdr.Read()) lstPhones.Items.Add(rdr.GetString(0) + "\t" + rdr.GetString(1)) End While 75

习题(续) C. [C#] SqlDataReader rdr = cmd.ExecuteReader(); 4.11 习题 C. [C#] SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.NextResult()) {   while (rdr.Read()) {     lstPhones.Items.Add(rdr.GetString(0) + "\t"      + rdr.GetString(1));   } } [VB.NET] Dim rdr as SqlDataReader = cmd.ExecuteReader() While (rdr.NextResult()) While (rdr.Read()) lstPhones.Items.Add(rdr.GetString(0) + "\t" + rdr.GetString(1)) End While 76

习题(续) D. [C#] SqlDataReader rdr = cmd.ExecuteReader(); 4.11 习题 D. [C#] SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.NextResult()) {   lstPhones.Items.Add(rdr.GetString(0) + "\t"    + rdr.GetString(1)); } [VB.NET] Dim rdr as SqlDataReader = cmd.ExecuteReader() While (rdr.NextResult()) lstPhones.Items.Add(rdr.GetString(0) + "\t" + rdr.GetString(1)) End While 77

习题(续) 4.11 习题 2. 请描述MyCommand的ExecuteNonQuery()、ExecuteScalar()、ExecuteReader()方法之间的区别。 78

习题(续) 4.11 习题 3. 承接第2题,请阐述ExecuteNonQuery()、ExecuteScalar() 、ExecuteReader()方法在以下程序段中的返回值(第7~9行的返回值,运行当前行后, 分别换成所注释的其他2行)。 private void Page_Load(object sender, System.EventArgs e) { MyConnection.Open(); MyCommand1.CommandText = "update admin set admin_code=′ 212′,Admin_pwd=′43′where admin_code=′23’"; MyCommand1.Connection = MyConnection; MyCommand1.ExecuteNonQuery(); //或者MyCommand1.ExecuteReader(); //或者MyCommand1. ExecuteScalar(); MyConnection.Close(); } 79

习题(续) 4.11 习题 4. 创建一个显示 GridView 的 Web 窗体。GridView 的数据源是名为 dsOrders 的数据集。该数据集包含名为 Orders 和 OrderDetails 的两个数据表。将Orders 表的OrderID设置为int, 将OrderDetails表的OrderID设置为decimal, 使用以下代码段创建这两个数据表之间的关系。(行号仅供参考。) 01 dtOrders = dsOrders.Tables["Orders"]; 02 dtOrderDetails = dsOrders.Tables["OrderDetails"]; 03 colParent = dtOrders.Columns["OrderID"]; 04 colChild = dtOrderDetails.Columns["ParentOrderID"]; 05 dsOrders.Relations.Add("Rel1", colParent, colChild, false); 此程序会发生异常吗?如果会,在哪里发生异常?为什么? 80

习题(续) 5. 如果使用ExecuteNonQuery()方法,执行以下SQL语句,那么在表创建成功后, 该方法的返回值是多少? 4.11 习题 5. 如果使用ExecuteNonQuery()方法,执行以下SQL语句,那么在表创建成功后, 该方法的返回值是多少? SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)" 81

习题(续) 4.11 习题 6. 使用Command对象进行异步操作时,Command 对象执行SQL命令的方法如ExecuteReader()、ExecuteNonQuery()、ExecuteXmlReader ()以及 ExecuteScalar(),只要新增以 Begin和End关键字所嵌入的一对方法就可以了吗? 82

习题(续) 4.11 习题 7. 如何在单个连接上执行多重SQL命令或存储过程? 83