1楼:匿名用户
第一个方法返回 datareader对象,这个对象可以读取所有返回的记录
第二个方法 返回一个object 只能取得查询结果最左上角一个列的数据
2楼:匿名用户
excutereader()执行查询命令,返回datareader对象
excutescalar返回单个值,一般为执行count(*)查询的结果数
3楼:匿名用户
xecutereader()返回符合要求的数据行,
xecutereader()返回第一行数据的第一个字段。
c#中executereader是什么意思?怎么用?
4楼:
:executereader 方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。
executereader 返回一个datareader对象:如果在sql***mand对象中调用,则返回sqldatareader;如果在oledb***mand对象中调用,返回的是oledbdatareader。可以调用datareader的方法和属性迭代处理结果集。
它是一个快速枚举数据库查询结果的机制,是只读、只进的。对sqldatareader.read的每次调用都会从结果集中返回一行。
5楼:匿名用户
1、msdn上说:sends the ***mandtext to the connection and builds a sqldatareader.
简单说,就是sql***mand对象的方法,执行返回数据的select语句。它的执行方法有两个:
第一,executereader():针对connection执行***mandtext,并返回dbdatareader。
第二,executereader(***mandbehavior behavior):针对connection执行***mandtext,并使用***mandbehavior值之一返回dbdatareader。
2、实例**
public void createmysqldatareader(string myselectquery, sqlconnection myconnection)
}finally
}3、下面说说它的用法:
①:用法:executereader 方法存在的目的只有一个:
尽可能快地对数据库进行查询并得到结果。executereader 返回一个 datareader对象:如果在sql***mand对象中调用,则返回sqldatareader;如果在oledb***mand对象中调用,返回的是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", reader.getdecimal(index));
******************************===
-- console.writeline(reader.getname(0));
******************************===
''reader.close();''
}catch(sqlexception ex)
finally
⑤:现在来强调下:现在来说下executereader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集。
c#中用三种形式都有错。sqldatareader reader = sql***mand.executereader();
6楼:不识台北路
using(varmyconnection=newsqlconnection())}}
你出错的原因是
sql***mand.***mandtext="selectusers.uno,upwdfromuserswhereuno.
='"+this.textbox1.text.
trim()+"'andupwd='"+this.textbox2.text.
trim()+"'";
中的“uno.=”多了一个"."。
如果你只是对编程有兴趣或者只是应付课程,接下来的话你就不要看了:
你的控件名没有实际意义,如果是十分庞大的程序,你的**不具可读性。
你在显示层直接修改数据库,没有使用分层思想,**耦合性太高,不利于扩展和维护。
你没有使用sql参数,而是直接拼接sql语句,这样无法应对sql攻击,**健壮性太弱。
实现了idespose接口的类要用using语句来声明,否则会影响程序性能。
你的reader根本没有定义,怎么可以使用?
reader.read()虽然返回值是bool类型,但是同时该方法会返回当前游标所在行的数据至reader,如果你只想知道reader里面是否有值,请直接使用reader.hasrows
连接字符串应该放入配置文件,否则一旦离开本机将很难部署
总之,你可以对比一下我的修改(手写,不保证可以正常运行),然后上网查阅一些资料,希望你在c#的学习中顺利。
7楼:_慾哭嘸淚
sqlconnectionmyconnection=newsqlconnection();
myconnection.connectionstring="server=localhost;integratedsecurity=sspi;database=news*****";
sql***mandsql***mand=newsql***mand();
sql***mand.connection=myconnection;
myconnection.open();
sql***mand.***mandtext="selectusers.uno,upwdfromuserswhereuno.
=\'"+this.textbox1.text.
trim()+"\'andupwd=\'"+this.textbox2.text.
trim()+"\'";
sql***mand.***mandtype=***mandtype.text;
if(reader.read())
--目测是这个转义字符的问题,你可以试试
c#读取executereader获取的数据是报错 是什么原因啊
8楼:匿名用户
首先你要判断mysread是否有数据,在进行读取, if(mysread.read())
C类调用另类中的方法,C# 一个类调用另一个类中的方法。
1楼 七彩虹科技 我虽然看的有点迷糊,但看完你和他们的问答以后,总结了一下,你是不是想这样 比如a是一个窗体类,b是另一个窗体类,你想在a的某一个函数里new一个b的对象并且让b显示出来,然后在b里面调用a的方法?如果是这样的话,你可以在b的构造函数里这么写public b a a 然后在b里面定义...
c类名1类名2方法名是什么意思,C++ 类名1 * 类名2::方法名()是什么意思
1楼 王现芝 1 方法名 是类名2的成员函数,无形参 2 类名1 是 1 中成员函数的返回值类型。 3 在类名2中函数的声明原型是 类名1 方法名 2楼 在类2中定义了一个返回值为指向类1指针的方法。 c 类 和类名相同的那2个函数有什么用的 3楼 猪头或火宝宝 class fc fc 它叫构造函数...
C用FOR循环控制Label控件方法
1楼 匿名用户 for int i 0 i取到label的未尾数字 label c text k n 1 2楼 为啥啊不能重名 你把数组里面的内容换成5 4 3 2 1行吗 c 用for循环控制控件属性? 3楼 魔法软糖 这样无论控件的名称是什么都可以进行控制 listtblist new list...