zoukankan      html  css  js  c++  java
  • ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法的区别

    关于MyCommand的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别: 
    1、ExecuteNonQuery():执行SQL,返回一个整型变量,如果SQL是对数据库的记录进行操作,那么返回操作影响的记录条数,如果是SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"那么在表创建成功后该方法返回 -1。 
    例如: 
    private void Page_Load(object sender, System.EventArgs e) 
    { 
    MyConnection.Open();’打开数据库 
    MyCommand1.CommandText = "CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"; MyCommand1.Connection = MyConnection; 
    MyCommand1.ExecuteNonQuery();’首先建立一个LookupCodes表,然后返回-1 
    //或者MyCommand1.ExecuteReader();首先建立一个LookupCodes表,然后返回一个System.Data.OleDb.OleDbDataReader类型的对象,该对象为:EOF 
    //或者MyCommand1. ExecuteScalar();首先建立一个LookupCodes表,返回未实列化的对象 
    MyConnection.Close(); 
    } 

    2、 ExecuteScalar():执行SQL,(如果SQL是查询Select)返回查询结果的第一行第一列,如果(如果SQL不是查询Select)那么返回未实列化的对象,因为对象未实列化,所以返回结果不能ToString(),不能Equals(null),也就是说返回结果没有任何作用 

    3、 executeReader方法执行SQL,(如果SQL是查询Select)返回查询结果的集合,类型是System.Data.OleDb.OleDbDataReader,你可以通过此结果,获取查询的数据。如果(如果SQL不是查询Select)那么返回一个没有任何数据的System.Data.OleDb.OleDbDataReader类型的集合(EOF) 

    原文地址:

    http://baiduhi.iteye.com/blog/232972

    http://blog.csdn.net/xjc1278003262/article/details/9773585

           ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete  语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作 用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了,例如对数据库共添加一个数据表的Create操作,当创建数据表成功时返回-1,如果操作失败的话(如数据表已经存在)往往会发生异常,所以执行这种操作时最好用try--catch--语句来容错。

    例如用ExecuteNonQuery()方法执行create操作

       

        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=PSDB;Integrated Security=SSPI");

                string str = "CREATE TABLE aaa ( " +

      "[ID] [int] IDENTITY (1, 1) NOT NULL , " +

      "[BasicID] [int] NULL ," +

      "[AdoptedName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ," +

      "[AdoptedSex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ," +  

    "[AdoptBirthday] [smalldatetime] NULL ," +

      "[AdoptedType] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +  

    "[ApprTime] [smalldatetime] NULL ," +  

    "[Remark] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL " + ") ON [PRIMARY]   ";     

      SqlCommand comm = new SqlCommand(str, conn);       

      int i = 10;      

       try       

      {           

           conn.Open();           

            i = comm.ExecuteNonQuery();          

            conn.Close();      

        }       

      catch (Exception ex)      

          {          

                 Response.Write(ex.Message);   

          }

            Response.Write(i.ToString());

           如果执行成功的话 返回的值为-1,如果数据表已经存在的话返回异常:数据库中已存在名为 'aaa' 的对象。

    原文地址:

    http://www.cnblogs.com/huomm/archive/2007/12/05/984102.html

  • 相关阅读:
    Python前言之Markdown使用
    Linux压缩命令
    ubuntu安装nodejs
    linux搭建nginx流服务器,OBS推流,VCL拉流播放
    nginx配置文件
    控制语句
    鼠标用户和键盘用户
    if else
    cookie自封装对象
    C#:基于WMI查询USB设备信息 及 Android设备厂商VID列表
  • 原文地址:https://www.cnblogs.com/Ly426/p/5030690.html
Copyright © 2011-2022 走看看