科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件细说ADO.NET命令

细说ADO.NET命令

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在ADO中,有三种可能方式用于更新数据源。一个是通过直接SQL语句,如INSERT, DELETE 或 UPDATE,或稍复杂、较成熟的存储过程......

作者:Dino Esposito 来源:Microsoft 2007年11月5日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
使用直接命令

  在向数据提供者发送命令前,要确保链接已经打开。默认链接是关闭的。然后,执行命令,只要有可能就关闭链接以确保其他客户能得到重要资源。

  SqlCommand类提供了用于执行命令的四个方法。它们是:ExecuteReader, ExecuteNonQuery, ExecuteScalar,及最新的但不是最小的,ExecuteXmlReader。从本质上讲,这些方法在期望的输入上不同,返回的结果不同而已。通常,在操作完成后,需要确定使用的方法而不是继续向前。

  顺便指出,OleDbCommand 对象不支持ExecuteXmlReader。

  ExecuteReader用于执行选择记录的查询命令或存储过程。它返回一个或多个结果集。

  cmd.Connection.Open();
  SqlDataReader dr = cmd.ExecuteReader();
  // 处理结果集
  cmd.Connection.Close();

  你可以通过SqlDataReader对象访问选择的记录,使用Read方法在记录间循环。使用NextResults方法移动到下一结果集。

  ExecuteNonQuery用于执行命令或存储过程,它影响特定表的状态。这只意味着一个查询命令。通常使用此方法执行INSERT, UPDATE, DELETE, CREATE, SET语句。

  ExecuteNonQuery只返回命令所影响到的行数,如果得不到信息则返回-1。它并不能使你访问语句或存储过程生成的结果集。实际上,无法阻止你用此方法执行一条查询命令,但在这种情况下,你既得不到结果集也得不到被影响的行数。

  cmd.Connection.Open();
  nRecsAffected = cmd.ExecuteNonQuery();
  cmd.Connection.Close();
  //此处检查影响到的记录

  通过SqlCommand对象的RecordsAffected属性可以得到影响到的行数。如果发生错误或如果执行的昌查询命令,此属性值为-1。

  ExecuteScalar期望执行查询命令,或更可能是一个存储过程,它返回数据。然而,此方法与ExecuteReader方法不同,它只将得到的结果集中的第一行第一列的值作为标量值返回。

  cmd.Connection.Open();
  Object o = cmd.ExecuteScalar();
  cmd.Connection.Close();
  // work on the scalar here

  此方法将值作为一个封装对象返回。然后由你来解包或将此值造型为正确的期望类型。

  如果需要对数据执行具有统计或集合性质的操作,ExecuteScalar方法将特别有用。在这些或相似的情况下,你可能只希望返回给调用者一个值。由于它的使用场合,你或多或少的对存储过程而不是单个SQL语句使用此方法。

  ExecuteXmlReader方法在SELECT命令执行后,构建并返回一个XmlReader对象,它利用了存在于SQL Server 2000中的XML特性。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章