何时使用ExecuteScalar,ExecuteReader,ExecuteNonQuery?

son*_*ona 54 c# vb.net

我对使用感到困惑

  1. 项目清单
  2. 的ExecuteScalar,
  3. 的ExecuteReader,
  4. 的ExecuteNonQuery

什么时候使用这些方法?

Joe*_*orn 61

ExecuteScalar()仅返回查询第一行第一列的值.
ExecuteReader()返回一个对象,该对象可以迭代整个结果集,同时只在内存中保留一条记录.
ExecuteNonQuery()根本不返回数据:仅受插入,更新或删除影响的行数.

此外,您可以查看DbDataAdapter类型,其中包括一个Fill()方法,该方法允许您将整个结果集下载到DataTableDataSet对象中,以及许多其他功能.

最后,这似乎是您熟悉MSDN的好时机.这就是为什么做文档:你有方法名称.去看看吧.

  • +1提及MSDN文档...当然也是正确的答案。 (2认同)

and*_*ndy 46

ExecuteScalar:单值

 Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT SUM(COLUMNNAME) FROM TABLE")); 
 Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT AVG(COLUMNNAME) FROM TABLE")); 
Run Code Online (Sandbox Code Playgroud)

ExecuteReader:以正向模式读取行

 IdataReader dr = ExecuteReader("SELECT * FROM TABLE"); 
 while(dr.Read())
 {
     //You will get rows values like this dr["ColumnName"]
 } 
Run Code Online (Sandbox Code Playgroud)

ExecuteNonQuery:用于插入/删除/更新行到表中

ExecuteNonQuery("DELETE FROM TABLE");
ExecuteNonQuery("UPDATE TABLE SET COLUMNNAME = 'A'");
Run Code Online (Sandbox Code Playgroud)


Ama*_*ian 10

ExecuteReader,ExecuteNonQuery和ExecuteScalar之间有什么区别

的ExecuteNonQuery

ExecuteNonQuery方法将返回使用INSERT,DELETE或UPDATE操作影响的行数.此ExecuteNonQuery方法仅用于insert,update和delete,Create和SET语句.(阅读有关ExecuteNonQuery的更多信息)

SqlCommand.ExecuteNonQuery MSDN文档

的ExecuteReader

在执行SQL查询或使用命令对象的存储过程时,将使用Execute Reader返回行集.这个是仅向前检索记录,它用于从头到尾读取表值.(阅读有关ExecuteReader的更多信息)

SqlCommand.ExecuteReader MSDN文档

执行标量

执行Scalar将在使用命令对象执行SQL查询或存储过程时返回单行单列值,即单值.从数据库中检索单个值非常快.(阅读有关Execute Scalar的更多信息)

SqlCommand.ExecuteScalar MSDN文档


dbw*_*dbw 5

使用ExecuteScalar时,查询返回一个值.如果它返回更多结果,则最终结果是第一行的第一列.一个例子可能是SELECT Count(*) from MyTable

使用ExecuteReader用于获取结果与多个行/列(如设置SELECT col1, col2 from MyTable.

使用ExecuteNonQuery的,不会从数据库中检索结果,但使现有的数据库更新用(例如,SQL语句UPDATE, INSERT,等).