使用DataReader高效地访问数据库
2004-11-30 17:59
357 查看
当我们连接到数据库,进行了想要的查询以后,就可以在网页上显示它们。使用DataReader是一个比较节省服务器资源的选择。DataReader提供了一种只读的、只向前的数据访问方法,因此在访问比较复杂的数据,或者只是想显示某些数据时,DataReader再适合不过了。
DataReader是一个抽象类,因此不能直接实例化,要通过Command对象的ExecuteReader方法来建立。
下面是个例子:
private void Page_Load(object sender, System.EventArgs e)
Response.Write("<P>" + reader["EmployeeID"] + " " + reader["LastName"] + " " + reader["BirthDate"] + "</P>");
此外,还可以使用类型访问方法:
Response.Write("<P>" + reader.GetSqlInt32(0).ToString() + " " + reader.GetSqlString(1).ToString() + " " + reader.GetSqlDateTime(2).ToString() + "</P>");
三种方法最终的结果都一样,但是哪种方法性能更好,速度更快呢?
答案是
类型访问 > 序数索引器 > 列名索引器
序数索引是通过列的序数来访问列值的,这种方法不必从行中查找列,而是直接跳到指定的列中进行访问,因而比较省资源,速度较快。
列名索引是通过列的名称来访问列值的,这种方法虽然速度一般,但是它使得代码更易读,因而更易维护,降低了成本。
类型访问和序数索引比较相像,它也包含序数,但它同时指定了数据类型,减少了额外的工作,因而使速度更快,类型更安全。
这里要提到的是,由于我们使用的是MSDE(SQL Server 2000),而.Net Framework提供了专门为SQL Server 7.0及以上版本设计的优化类型方法,所以我们使用了GetSqlInt32、GetSqlString、GetSqlDateTime等优化方法,更为通用的是GetInt32、GetString、GetDateTime等。
GetSqlInt32、GetSqlString、GetSqlDateTime等方法返回的是SqlTypes对象,比如,GetSqlInt32方法返回的是System.Data.SqlTypes.SqlInt32类型而不是System.Int32对象,后者才是GetInt32方法返回的对象,所以我们在每个方法后再调用了ToString方法进行转换,这样才能使用"+"连接,然后输出。
下面是System.Data.SqlTypes 命名空间为 SQL Server 内的本机数据类型提供类。这些类提供了一种较之其他数据类型更安全、更快捷的方法。在可能丢失精度的情况下,在此命名空间中使用这些类有助于防止产生类型转换错误。由于其他数据类型在幕后与 SqlTypes 进行相互转换,所以在此命名空间内显式创建和使用对象将会使代码更快。
DataReader是一个抽象类,因此不能直接实例化,要通过Command对象的ExecuteReader方法来建立。
下面是个例子:
private void Page_Load(object sender, System.EventArgs e)
Response.Write("<P>" + reader["EmployeeID"] + " " + reader["LastName"] + " " + reader["BirthDate"] + "</P>");
此外,还可以使用类型访问方法:
Response.Write("<P>" + reader.GetSqlInt32(0).ToString() + " " + reader.GetSqlString(1).ToString() + " " + reader.GetSqlDateTime(2).ToString() + "</P>");
三种方法最终的结果都一样,但是哪种方法性能更好,速度更快呢?
答案是
类型访问 > 序数索引器 > 列名索引器
序数索引是通过列的序数来访问列值的,这种方法不必从行中查找列,而是直接跳到指定的列中进行访问,因而比较省资源,速度较快。
列名索引是通过列的名称来访问列值的,这种方法虽然速度一般,但是它使得代码更易读,因而更易维护,降低了成本。
类型访问和序数索引比较相像,它也包含序数,但它同时指定了数据类型,减少了额外的工作,因而使速度更快,类型更安全。
这里要提到的是,由于我们使用的是MSDE(SQL Server 2000),而.Net Framework提供了专门为SQL Server 7.0及以上版本设计的优化类型方法,所以我们使用了GetSqlInt32、GetSqlString、GetSqlDateTime等优化方法,更为通用的是GetInt32、GetString、GetDateTime等。
GetSqlInt32、GetSqlString、GetSqlDateTime等方法返回的是SqlTypes对象,比如,GetSqlInt32方法返回的是System.Data.SqlTypes.SqlInt32类型而不是System.Int32对象,后者才是GetInt32方法返回的对象,所以我们在每个方法后再调用了ToString方法进行转换,这样才能使用"+"连接,然后输出。
下面是System.Data.SqlTypes 命名空间为 SQL Server 内的本机数据类型提供类。这些类提供了一种较之其他数据类型更安全、更快捷的方法。在可能丢失精度的情况下,在此命名空间中使用这些类有助于防止产生类型转换错误。由于其他数据类型在幕后与 SqlTypes 进行相互转换,所以在此命名空间内显式创建和使用对象将会使代码更快。
相关文章推荐
- 在oracle的PL程序块中执行一个varchar2类型变量中的sql 语句
- Oracle9i初始化参数中文说明
- 对Oralce数据库存取图片的几种方法
- MySQL errno: 145 错误修复
- 防止SQL脚本利用
- SQL Server 调用C#。net写的Dll ,(分享我的HelloWorld测验)
- 解读Oracle 9201的控制文件
- oracle 中查某表的所有列字段
- oracle 中查某表的所有列字段
- Oracle内存结构(三)----Process Memory的详细信息
- 实例讲解面向对象的思维方法
- Oracle904InstalOnRedHatAS3
- 使用链接服务器执行远程数据库上的存储过程
- 关于动态SQL的使用
- 使用DataReader高效地访问数据库
- DataGrid的使用问题汇总
- 书写历史的甲骨文--ORACLE公司传奇
- 使用Rman的Plus archvielog选项简化数据库备份操作
- ORACLE 常用的SQL语法和数据对象
- 在.net安装程序中部署oracle客户端全攻略