Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "第4章 在连接环境中获取数据."— Presentation transcript:

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

2 数据访问技术—— 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

41 5 6 配置Parameters 集合 (续) 单击“确定” 按钮。 4.4.1 通过Visual Studio 2005配置
在弹出的“SqlParameter 。 6 单击“确定” 按钮。 41

42 配置Parameters集合的多媒体演示

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

44 添加并配置参数(续) 参数对象的属性及其描述如下表所示。 代码示例C# 代码示例VB 4.4.2 通过编程方式添加并配置参数 属性 描述
ParameterName 将该属性设置为SQL命令或存储过程中的参数名,如 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

73 习题 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

74 习题(续) 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

75 习题(续) 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

76 习题(续) 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

77 习题(续) 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

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

79 习题(续) 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

80 习题(续) 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

81 习题(续) 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

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

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


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

Similar presentations


Ads by Google