menu
more_vert
ADO.NET中COMMAND对象的ExecuteNonQuery、ExcuteReader和ExecuteScalar方法

作者:dayu

1、ExecuteNonQuery方法。
该方法执行更新操作,即与UPDATE、INSERT、DELETE等语句有关的操作,在这种情况下,返回值是命令影响的行数。对其他语句,如SET或CREATE,则返回-1,如果发生回滚,返回值也是-1。

2、ExcuteReader方法。
它与查询命令一起使用,返回一个数据阅读器对象SqlDataReader类的一个实例。该方法执行更新语句,执行成功后,不会返回任何受影响的数据行。

3、ExecuteScalar方法。
如果只想检索数据库信息中的已个值,而不需要返回表或数据流形式的数据库信息。例如,只需返回COUNT(*)、SUM(Price)或AVG(Quantity)等聚合函数的结果,该方法适合。如果在一个常规的查询语句中调用该方法,则只读取第一行第一列的值,而丢弃所有其他值

ExecuteReader:可以读一个表的记录,只能读不能写

ExecuteScalar:只能读一条记录,一般用来判断数据库是否有数据等,只能读不能写

ExecuteNonQuery:可以写以可以读,

首先,我们知道这三个东东应该是ADO.NET中对数据库中操作的CMD,我们知道,如果我们要进行一个网让建设,必然在这个过程中,我们一定要进行与数据库的交互,我们要不断地进行数据库的读写,那么ExecuteNonQuery(),ExecuteReader()与ExecuteScalar()就是我们在对数据库进行操作时要用到的,下面我来依次认识一下:

ExecuteNonQuery():这个东东可以让我们在更新数据库时不使用 DataSet 而使用 ExecuteNonQuery 更改数据库中的数据。通过执行 UPDATE、INSERT 或 DELETE SQL语句就可以达到更改数据库中的数据目的。即使 ExecuteNonQuery 不返回任何行,映射到参数的输出参数或返回值仍然使用数据填充。但对于 UPDATE、INSERT 和 DELETE SQL语句,返回的值就是受ExecuteNonQuery()命令影响的行数。对其它类型的语句以及回退来说,返回的值都是 -1。

ExecuteReader():我们通常在asp中用Recordset对象来从数据库中读出数据,并且用循环语句来一个一个的读出数据,但在我们的ADO.NET中,我们就是用DataReader 对象的ExecuteReader()方法来进行数据的列出,并且我们用这个ExecuteReader()方法来显示数据是最快的一种方法,因为当我们在用ExecuteReader()方法中的DataReader 对象来进行数据的在网站建设中显示时,他只可以一条一条向前读,不能返回,也就是像ASP中的ADO方法中的Recordset 对象的Movenext一样,他没有move -1这样的返回方法。

ExecuteScalar():这种CMD相当于我们在ADO中用SQL语句中使用一些计算函数的功能一样,在这里我们只是返回所有影响的行数的第一行第一列数据,这样也就是相当于专业为我们的如:select count(*) from database的功能一样,我们可以用

string sql="select * fromdatabase"

SqlCommand cmd=SqlCommand(sql,conn)

int i=(int)cmd.ExecuteScalar()

这样我们的局部变更i的值就是与上面我的功能一样.

最后值得一说的是:这是出自我平时所用的时候的一些认识:那就是如果我们在进行数据操作时,如果没有数据可操作,那么我们只能使用ExecuteReader()这个CMD,而executeNoeQuery()与Executescalar()如果在没有数据的时候使用时,就会出错“对像没有实例化”的错误。所以我们在判断是否有数据时,只可以用ExecuteReader()中的REad()方法来检测。

ADO.NET中COMMAND对象的ExecuteNonQuery、ExcuteReader和ExecuteScalar方法

原文地址:http://www.cnblogs.com/liuhuimh/p/7221702.html