• 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()方法来检测。

  • 相关阅读:
    Docker 快速安装Jenkins完美教程 (亲测采坑后详细步骤)(转)
    如何在Jupyter Lab中安装不同的Kernel
    【安全测试】渗透测试神器BurpSuite环境搭建
    电商平台搭建流程是怎样的_不懂编程怎么搭建_OctShop
    求100以内的所有素数
    C语言预处理
    10个技巧,3分钟教会你高效寻找开源项目
    智能交通技术专利态势分析
    RPC 基础系列
    Mysql专题
  • 原文地址:https://blog.csdn.net/dsbss/article/details/131146301