ExecuteReader
最近在做winform的编程,想到一真没有使用过ExecuteReader。可能以前以后它的用户不大,或者
不大好用,故没有用过。今天在这里将学习记录写下来,供读者参考:
1、MSDN上说:Sends the CommandText to the Connection and builds a SqlDataReader.
(这句话就不翻译了)
2、实例片段:
[C#]
public void CreateMySqlDataReader(string mySelectQuery, SqlConnection myConnection)
{
string sql;//sql语句
SqlCommand myCommand = new SqlCommand(sql, myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
try
{
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
}
finally
{
myReader.Close();
myConnection.Close();
}
}
3、下面说说它的用法:
①:
用法:ExecuteReader 方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。ExecuteReader 返回一个 DataReader对象:如果在SqlCommand对象中调用,则返回SqlDataReader;如果在OleDbCommand对象中调用,返回的是OleDbDataReader。可以调用DataReader的方法和属性迭代处理结果集。它是一个快速枚举数据库查询结果的机制,是只读、只进的。对SqlDataReader.Read的每次调用都会从结果集中返回一行。
②:
这是出自我平时所用的时候的一些认识:那就是如果我们在进行数据操作时,如果没有数据可操作,那么我们只能使用ExecuteReader()这个CMD,而executeNoeQuery()与Executescalar()如果在没有数据的时候使用时,就会出错“对像没有实例化”的错误。所以我们在判断是否有数据时,只可以用ExecuteReader()中的REad()方法来检测。
④:
DataReader还有一个GetValue方法可以用来检索字段的值。GetValue返回一个一般性的Object,但是被无数个返回强类型的Get方法补充,比如GetInt32和GetDecimal(参考MSDN2005)。对GetOrdinal的调用是必须的,因为GetDecimal只接受整型索引。GetOrdinal所做的工作正好与GetName相反——它把字段名转换成数字索引。
注意:DataReader必须处理Close方法。
using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7/leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM titles WHERE advance != 0", conn);
SqlDataReader reader = cmd.ExecuteReader();
int index = reader.GetOrdinal("advance");
while(reader.Read())
Console.WriteLine("{0:c}", reader.GetDecimal(index));
=================================
-- Console.WriteLine(reader.GetName(0));
=================================
''reader.Close();''
}
catch(SqlException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
========================================================
-- 可以配置DataReader,使它真的可以关闭一个底层连接
-- reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
========================================================
conn.Close();
}
⑤:
现在来强调下:现在来说下ExecuteReader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集。
一般用在判断这行的结果集是否有效果,有的话就执行下面的操作。一句话:一般用于判断返回的结果。
完:请高手给予指点
http://blog.csdn.net/zhchongyao/article/details/5544960
ExecuteReader的更多相关文章
- ExecuteReader在执行有输出参数的存储过程时拿不到输出参数
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 后期会在博客首发更新:http://dnt.dkill.net/Article/D ...
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...
- ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据
使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.S ...
- ExecuteReader执行查询实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别
本文来自:http://www.cnblogs.com/zhouxiaxue/archive/2006/05/12/398266.html http://www.cnblogs.com/yaoxc/a ...
- C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?
C#中ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter应该怎么用? (2013-10-16 13:21: ...
- ExecuteNonQuery方法、ExecuteScalar方法、ExecuteReader方法的区别
----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加.删除和更新),那么方法将返回操作所影响的记录条数.- ...
- ExecuteReader()获得数据
ExecuteReader用于实现只进只读的高效数据查询.ExecuteReader:返回一个SqlDataReader对象,可以通过这个对象来检查查询结果,它提供了只进只读的执行方式,即从结果中读取 ...
- 假设分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化
{System.InvalidOperationException: 假设分配给命令的连接位于本地挂起事务中.ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始 ...
随机推荐
- Linux统计文件夹下文件信息
统计当前文件夹里面有多少文件,即统计文件个数 ls -l |grep "^-"|wc -l 统计当前文件夹里面有多少文件夹,即统计文件夹个数 ls -l |grep "^ ...
- SDK更新太慢
同时,更新ADT和SDK Manager 在SDK Manager下Tools->Options打开了SDK Manager的Settings,选中“Force https://… source ...
- MobilePhone正则表达式
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号) ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3} ...
- 王灏:光音网络致力打造Wi-Fi大生态圈
光音网络,做的是本地网络综合服务.在中国,想把互联网做到覆盖延伸范围之外的最后100米,光音网络是当中一家,也是最坚持的一家.为千万家本地生活商户提供帮助,为数亿本地用户提供最佳的本地网络体验,这是光 ...
- 指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏
原文网址:http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995285.html 讲的很清楚,备份记录. (一) 用函数指针变量调用函数 可以用指 ...
- hdu1864 最大报销额(01背包)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 Problem ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- 懂,你的App生,不懂,死!
近期有一些开发人员.创业公司的人加我微信viyi88,咨询一些关于自己App的事情.被问得最多的可能就是:"我的App怎样推广添加下载量?"而且信誓旦旦地说自己的App做得非常好, ...
- android自定义控件之滚动广告条
在一些电子商务网站上经常能够看到一些滚动的广告条,许多软件在首次使用时也有类似的广告条,如图: 其实在github上有实现这种效果的控件,不过这东西做起来也是很简单,我们今天就来看看该怎么做. 先来看 ...
- C++ 读取XML文件(tinyXML库的应用)
C++读取xml有很多第三方的xml解析库,最近使用tinyxml库来解析,下面直接上应用例子: Skin.xml文档内容如下: <UI> <Image name="ban ...