您当前的位置: 首页 >  .net

ADO.NET的记忆碎片(二)

发布时间:2011-12-16 13:10:15 ,浏览量:0

 
接着 ADO.NET的记忆碎片(一)继续 Command类在执行SQL的时候,可能会遇到一次执行多条SQL的情况,就像这样:

string strConn ="...";//连接字符串 string strSql = "update tableName1 set...;"+"update tableName2 set...;"; SqlConnection cn = new SqlConnection(strConn); cn.Open(); SqlCommand cmd = new SqlCommand(strSql,cn); int intTotalRowsAffected = cmd.ExecuteNonQuery();//返回的是多条SQl语句影响的总行数

可以看到返回的是影响数据库表的总行数,这并不是我们想要的结果,解决的方法是在每次执行一条SQL语句完成的时候就能返回一个数据给我,这才是我想的。好在ADO.NET2.0提供了我们这样的获取机会,在Command中公开了一个StatementCompleted事件,这个事件是在每一条SQL语句执行完成后促发的,并且事件的主要参数中提供了RecordCount属性,就是表示这次SQL语句的执行对数据库表所产生的行数的影响。实现该功能如下:

string strConn ="...";//连接字符串 string strSql = "update tableName1 set...;"+"update tableName2 set...;"; SqlConnection cn = new SqlConnection(strConn); cn.Open(); SqlCommand cmd = new SqlCommand(strSql,cn); cmd.StatementCompleted += new StatementCompletedEventHandler(HandleStatementCompleted); int intTotalRowsAffected = cmd.ExecuteNonQuery();//返回的是多条SQl语句影响的总行数 cn.Close(); ... static void HandleStatementCompleted( object sender, StatementCompletedEventArgs e) {     Console.WriteLine(e.RecordCount); }

DataReader类

前面其实已经多次使用了DataReader,在此做一回顾: 当一个Command对象执行ExecuteReader()方法返回值就是一个DataReader类型的实例,保存着查询的结果集。代码如下:

SqlDataReader rdr = cmd.ExecuteReader();

对查询的结果集遍历:

while(rdr.Read()) {     Console.WriteLine("{0}--{1}",rdr[0],rdr["CustomerName"]);    } rdr.Close();

好了,下面对DataReader类进行进一步的研究,很多时候我们得到结果集,但是想看看里面的字段的数目、字段名称、字段的Net类型、字段的数据库数据类型等,这一些架构信息可以帮助我们更好的扩展应用程序,ADO.NET也帮助我们实现了方法我们可以自由的调用:

for(int intField=0;intField

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    106171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0549s