9ce7299d448f149c67da988e1cffd971.png

Command 对象需要取得将要执行的 SQL 语句,通过调用该类提供的多种方法,向数据库提交 SQL语句。下面详细介绍 SqlCommand 对象中的几种执行 SQL 语句的方法。

01  ExecuteNonQuery 方法

执行 SQL 语句,并返回受影响的行数,在使用 SqlCommand 向数据库发送增、删、改命令时,通常使用 ExecuteNonQuery 方法执行发送的 SQL 语句。

语法如下: 

public override int ExecuteNonQuery() 

返回值:受影响的行数。

例2

创建一个 Windows 应用程序,在三八妇女节那天,公司决定为每位女员工颁发奖金50元。这样,就需要向数据发送更新命令,将数据库中所有女员工的奖金数额加上 50,所以要使用 ExecuteNonQuery 方法执行发送的 SQL 语句,并获取受影响的行数。

代码如下:

SqlConnection conn;                                        //声明一个 SqlConnection 变量
private void button1_Click(object sender, EventArgs e)
{        
     //实例化 SqlConnection 变量 conn
     conn=new SqlConnection("server=.;database=db_15;uid=sa;pwd=");
     conn.Open();                                          //打开连接
SqlCommand cmd = new SqlCommand();                         //创建一个 SqlCommand 对象
//设置 Connection 属性,指定其使用 conn 连接数据库
cmd.Connection= conn;
//设置 CommandText 属性,以及其执行的 SQL 语句
cmd.CommandText="update tb_command set 奖金=50 where 性别='女'";
//设置 CommandType 属性为 Text,使其只执行 SQL 语句文本形式 
cmd.CommandType = CommandType.Text;
//使用 ExecuteNonQuery 方法执行 SQL 语句       
int i = Convert.Tolnt32(cmd.ExecuteNonQuery());
label2.Text="共有”+i.ToString()+"名女员工获得奖金";
}

程序的运行结果如图2 所示。

12bf87eeb6c5b488e4905bdab99e563a.png

              图2  对数据表执行更新操作

  说明

如果想要执行存储过程,应将 CommandType 属性设置为 StoredProcedure,将CommandText 属性设置为存储过程的名称。

02  ExecuteReader 方法

执行 SQL 语句,并生成一个包含数据的 SqlDataReader 对象的实例。

语法如下:

public SqlDataReader ExecuteReader()

返回值:一个 SqlDataReader 对象。

例3

创建一个 Windows 应用程序,根据 select * from tb_command 语句进行查询,调用 ExecuteReader 方法返回一个包含 tb_command 表中所有数据的 SqlDataReader 对象。

代码如下:

SqlConnection conn;                                        //声明一个 SqlConnection 对象 
private void button1_Click(object sender, EventArgs e)
{       
     //实例化 SqlConnection 变量 conn
     conn=new SqlConnection("server=.;database=db_15;uid=sa;pwd=");      
     conn.Open();                                          //打开连接      
     SqlCommand cmd = new SqlCommand();                    //创建一个 SqlCommand 对象   
     //设置 Connection 属性,指定其使用 conn 连接数据库        
     cmd.Connecton = conn;      
     //设置 CommandText 属性,以及其执行的 SQL 语句      
     cmd.CommandText ="select* from tb_command";    
     //设置 CommandType 属性为 Text,使其只执行 SQL 语句文本形式 
     cmd.CommandType = CommandType.Text;  
     //使用ExecuteReader 方法实例化一个 SqlDataReader 对象    
     SqlDataReader sdr = cmd.ExecuteReader();  
     while(sdr.Read())                                     //调用 while 语句,读取 SqIDataReader     
     {   
         listView1.Items.Add(sdr[1].ToString());           //将内容添加到 listView1 控件中  
      }    
      conn.Dispose();                                      //释放连接     
      button1.Enabled = false;                             //禁用按钮 
      }

程序的运行结果如图3 所示。

2dd3a4eceed9a0fbc4d7b4340bd90ad9.png

                   图3  获取员工姓名

03  ExecuteScalar 方法

执行 SQL 语句,返回结果集中的第一行的第一列。

语法如下:

public override Object ExecuteScalar()

返回值:结果集中第一行的第一列或空引用(如果结果集为空)。

在例1 中,已经使用 ExecuteScalar 方法获取指定数据表中的数据数量,此处不再赘述。大家可参见例1 中的代码,理解 ExecuteScalar 方法的使用。ExecuteScalar 方法通常与聚合函数一起使用, 常见的聚合函数如表1 所示。 

d0a71a98f685ad04343187722f1cfe67.png

             表1  常见的聚合函数及说明

往期推荐

d0379d05da1f9ed4c66813298334d5d6.png

Love life,love yourself

关注小编不迷路呦~

-----------------------------------

需要进技术群交流的,请添加小编mm1552923

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐