zoukankan      html  css  js  c++  java
  • SqlServer数据库的一些方法的用途

    一直分不清这三种方法的具体用法现在终于找齐了

    ExecuteNonQuery方法和ExecuteScalar方法和ExecuteReader方法的区别 
     

    (1)ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数。

    (2)ExecuteScalar():执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。


    ------【分析】
    命令对象的ExecuteNonQuery()方法用于执行任何不从数据库返回结果集的SQL操作命令,包括INSERT INTO、UPDATE、DELETE语句、没有返回数值的存储过程、CREATE TABLE和CREATEINDEX之类的DDL语句。ExecuteNonQuery方法还可用来执行目录操作,例如查询数据库的结构或创建诸如表等的数据库对象。ExecuteNonQuery方法对于UPDATE、INSERT INTO和DELETE这些操作语句,其返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1。
    假设cmd为SQL SERVER数据提供者的命令对象(即SqlCommand),cn为连接对象(保持打开状态),调用ExecuteNonQuery方法如以下代码所示。
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    //设置cmd的命令文本,本例为删除Table1表中id字段值大于1的记录
    cmd.CommandText = “DELETE FROM Table1 WHERE [id]>1”;
    int count = cmd.ExecuteNonQuery();
    以上代码中,创建了SqlCommand类型的命令对象cmd,设置其连接为连接对象cn,SQL命令文本为某个SQL语句(一般为增、删、改命令)。执行ExecuteNonQuery方法后,命令文本即通过连接对象作用到数据库中,其返回值count则为数据库中受到影响的数据记录数量。
    命令对象的ExecuteScalar()方法由于只能返回数据集的第1行第1列,所以常被用于执行聚合函数。假设cmd为SQL SERVER数据提供者的命令对象(即SqlCommand),cn为连接对象(保持打开状态),调用ExecuteScalar方法如以下代码所示。
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    //设置cmd的命令文本,本例为查询Table1表中记录的数量
    cmd.CommandText = “SELECT COUNT(*) FROM Table1”;
    int count = (int)cmd.ExecuteScalar();

    以上代码中,创建了SqlCommand类型的命令对象cmd,设置其连接为连接对象cn,SQL命令文本为某个SQL语句。由于返回值为object类型,所以需要进行强制转换,count变量即存储了所需数据表中记录的数量。


     (3)ExecuteReader():我们通常在asp中用Recordset对象来从数据库中读出数据,并且用
    循环语句来一个一个的读出数据,但在我们的ADO.NET中,我们就是用DataReader 对象的
    ExecuteReader()方法来进行数据的列出,并且我们用这个ExecuteReader()方法来显示数据
    是最快的一种方法,因为当我们在用ExecuteReader()方法中的DataReader 对象来进行数据
    的在网站建设中显示时,他只可以一条一条向前读,不能返回,也就是像ASP中的ADO方法
    中的Recordset 对象的Movenext一样,他没有move -1这样的返回方法。
    说明:如果没有数据可操作,那么只能使用调用命令对象的ExecuteReader方法,返回一个数据读取器(DataReader对象)。因为 ExecuteNonQuery()与ExecuteScalar()在没有数据的时候调用时,就会出现“对象没有实例化”的错误。所以在判断是否有数据时,应该调用数据读取器的Read()方法来检测。

  • 相关阅读:
    Delphi XE5 android 蓝牙通讯传输
    Delphi XE5 android toast
    Delphi XE5 android openurl(转)
    Delphi XE5 如何设计并使用FireMonkeyStyle(转)
    Delphi XE5 android 捕获几个事件
    Delphi XE5 android listview
    Delphi XE5 android 黑屏的临时解决办法
    Delphi XE5 android popumenu
    Delphi XE5 android 获取网络状态
    Delphi XE5 android 获取电池电量
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3181897.html
Copyright © 2011-2022 走看看