c中的executeReader方法

2021-01-16 08:54:21 字数 3978 阅读 7039

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...