本文的发布号曾为 CHS312855
有关本文的 Microsoft Visual Basic .NET 版本,请参见
310348。
本文引用下面的 Microsoft .NET 框架类库名称空间:
本文引用下面的 Microsoft .NET 框架类库名称空间:
- System.Data.OleDb
- System.Data.SqlClient
本任务的内容
概要
本文介绍在使用 DataReader 对象时,如何使用 Get xxx 方法(如 GetChar、 GetDouble 和 GetInt32)来避免装箱损失。返回页首
技术说明
在使用 Item 属性从 DataReader 读取列时,值被装箱然后被取消装箱。如果值被反复装箱和取消装箱,堆会迅速装满并增加垃圾回收的频率。这也会稍微影响性能,因为 Microsoft Visual Studio .NET 会过多地转换和复制数据。备注:装箱意味着数据以 System.Object 形式复制到堆上。在转换为特定数据类型时,值被取消装箱并复制到堆栈上的变量上或者复制到另一个对象中。
若要避免装箱损失,请使用 Get xxx 方法(如 GetChar、 GetDouble、 GetInt32 等),这些方法将数据以简单数据类型形式而非 System.Object 形式返回。
备注: Item 属性是 Visual C# .NET 中 SqlDataReader 类的索引器
返回页首
要求
下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:- Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server
- Microsoft Visual Studio .NET
- Visual Studio .NET
- ADO.NET 基础和语法
创建项目和添加代码
- 启动 Visual Studio .NET。
- 在 Visual C# .NET 中新建一个 Windows 应用程序项目。默认情况下会将 Form1 添加到项目中。
- 确保您的项目包含一个对 System.Data 名称空间的引用,如果未包含,请添加一个对此名称空间的引用。
- 将一个命令按钮放到 Form1 上。将按钮的 Name 属性更改为 btnTest,将 Text 属性更改为 Test。
- 针对 System、System.Data 和 System.Data.SqlClient 名称空间使用 using 语句,这样以后就不需要在代码中限定这些名称空间中的声明了。将以下代码添加到 Form1 的"General Declarations"部分中:
using System; using System.Data.OleDb; using System.Data.SqlClient;
- 将以下代码添加到 btnTest_Click 事件中:
String myConnString = "User ID=myUid;password=myPwd;Initial Catalog=Northwind;Data Source=myServer"; String mySelectQuery = "Select * From Customers"; SqlConnection con = new SqlConnection(myConnString); SqlCommand myCommand = new SqlCommand(mySelectQuery, con); con.Open(); SqlDataReader myReader = myCommand.ExecuteReader(); String str1 = ""; while (myReader.Read()) { //This code uses the GetString method. //str1 = str1 + myReader.GetString(0) + ", "; //This code uses the Indexer for myReader. str1 = str1 + myReader[0] + ", "; } MessageBox.Show(str1); myReader.Close(); con.Close();
- 根据您的环境相应地修改连接字符串 (myConnString)。
- 保存项目。在调试菜单上,单击开始以运行您的项目。
- 单击测试。请注意,查询将使用其中的某个方法(GetString 或 Item)来返回数据,消息框将显示此数据。
- 若要比较性能方面的区别或者测定代码的运行用时,请使用 QueryPerformanceCounter 函数测定应用程序代码的运行用时。有关 QueryPerformanceCounter 的更多信息,请参阅参考一节。
疑难解答
使用 Get xxx 方法的缺点在于访问字段之前必须首先检查是否为 NULL。若要检查是否为 NULL,请使用 IsDBNull 方法。返回页首
参考
有关 ADO.NET 对象和语法的更多信息,请参阅 Microsoft .NET 框架软件开发工具包 (SDK) 文档或 MSDN Online 中的下列主题:使用 ADO.NET 访问数据
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp
306979 HOW TO:在 Visual C# .NET 中使用 QueryPerformanceCounter 测定代码的运行用时
返回页首这篇文章中的信息适用于:
- Microsoft ADO.NET(随 .NET 框架一起提供)
- Microsoft Visual C# .NET (2002)
最近更新: | 2002-8-6 (1.0) |
关键字 | kbDSupport kbGrpDSMDAC kbGrpDSVBDB kbhowto kbHOWTOmaster kbOLEDB kbSqlClient kbSystemData KB312855 |