SqlHelper详解

    学习三层的时候代码中有个“SqlDataReader”,不太理解是什么意思,所以上网查了一下,进而见到了“sqlHelper”大师,之前师傅给徒弟验项目的时候也提过相关的问题,这个“之前”也是有一段时间了,不知道再拖会拖到什么时候,索性今天写了吧,有错误之处请大家不吝赐教。

SqlHelper

     用于简化你重复去写的那些数据库连接:SqlConnection,SqlCommand,SqlDataReader等等。SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很是方便。 

     该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。每种方法的重载都支持不同的方法参数。因此呢开发人员可以确定传递连接、事务和参数信息的方式。具体实现的方法如下:

ExecuteNonQuery

    用于执行(不返回任何行或值)的命令如:INSERT INTO、UPDATE、DELETE语句、没有返回数值的存储过程、CREATE TABLE和CREATEINDEX之类的DDL语句;这些命令常用于执行数据库更新也用于返回存储过程的输出参数(返回int类型变量;

    如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数,对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1

    ExecuteNonQuery方法还可用来执行目录操作,例如查询数据库的结构或创建诸如表等的数据库对象。

ExecuteScalar

     返回一个值,返回的结果为object类型,在使用前须强制转换为所需的类型。该值始终是该命令返回的第一行的第一列,即只能返回数据集的第1行第1列,所以常被用于执行聚合函数。

     进一步来说其执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行和列;如果SQL语句不是SELECT查询,那么返回结果没有任何作用。

对前面的补充

     如果没有数据可操作,那么只能使用调用命令对象的ExecuteReader方法,返回一个数据读取器(DataReader对象)。因为ExecuteNonQuery()与ExecuteScalar()在没有数据的时候调用时,就会出现“对象没有实例化”的错误。所以在判断是否有数据时,应该调用数据读取器的Read()方法来检测。

ExecuteReader

     返回sqlDatareader对象,该对象包含由某一命令返回的结果集。若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法;通常用Recordset对象来从数据库读出数据,并且用循环语句来一个一个的向前读出数据,不能返回。需引用System.Data.SqlClient:命名空间。

Sqldatareader

    一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。需要引用命名空间:System.Data.SqlClient

若要创建 SqlDataReader,必须调用Sqlcommand对象的 ExecuteReader 方法,而不要直接使用构造函数。

在使用 SqlDataReader 时,关联的 SqlCommand正忙于为 SqlDataReader 服务,对 SqlConnection 无法再进行其他的操作,只能将其关闭。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。例如,在调用 Close 之前,无法检索输出参数。

     SqlDataReader 的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是,确切的行为与执行时间有关。当 SqlDataReader 关闭后,只能调用 IsClosed 和 RecordsAffected 属性。尽管当 SqlDataReader 存在时可以访问RecordsAffected 属性,但是请始终在返回 RecordsAffected 的值之前调用 Close,以保证返回精确的值。


http://www.360doc.com/content/10/0924/13/1621700_55979622.shtml


ExecuteDataset:

    返回dataset对象,该对象包含由某一命令返回的结果集。

    运行基本SELECT(选择)查询并生成一个DataSet,然后就能够被绑定到服务器对象上,或者被用来创建DataView(数据视图)。

ExecuteXmlReader

    返回FOR XML 查询的XML片段。

专用函数

     SqlHelper 类还包含一些专用函数,用于管理参数和准备要执行的命令。不管客户端调用什么样的方法实现,所有命令都通过 SqlCommand 对象来执行。在 SqlCommand 对象能够被执行之前,所有参数都必须添加到 Parameters 集合中,并且必须正确设置 Connection、CommandType、CommandText 和 Transaction 属性,知识迁移到三层是不是似曾相识?

    主要用于提供一种一致的方式,以便向 SQL Server 数据库发出命令,而不考虑客户端调用的重载的方法实现。SqlHelper 类中的专用实用程序函数包括:

AttachParameters:

    该函数用于将所有必要的 SqlParameter 对象连接到正在运行的SqlCommand。

AssignParameterValues:

    该函数用于为 SqlParameter 对象赋值

PrepareCommand:

    该函数用于对命令的属性(如连接、事务环境等)进行初始化

ExecuteReader:

    此专用 ExecuteReader 实现用于通过适当的 CommandBehavior 打开SqlDataReader对象,以便最有效地管理与阅读器关联的连接的有效期。

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 79
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 79
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值