C#:执行SQL语句Command

来源:互联网 发布:淘宝水晶宫论坛vip账号 编辑:程序博客网 时间:2024/05/16 07:55


    Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有以下几种方式:

►SqlCommand:用于向SQL Server数据库发送SQL语句,位于System.Data.SqlClient命名空间。

►OleDbCommand:用于向使用OLE DB公开的数据库发送SQL语句,位于System.Data.OleDb命名空间。例如,Access数据库和MySQL数据库都是OLE DB公开的数据库。

►OdbcCommand:用于向使用ODBC公开的数据库发送SQL语句,位于System.Data.Odbc命名空间。有些数据库如果没有提供相应的连接程序,则可以配置好ODBC连接后,使用OdbcCommand。

►OracleCommand:用于向使用Oracle公开的数据库发送SQL语句,位于System.Data.OracleClient命名空间。在使用OracleCommand向Oracle数据库发送SQL语句时,要引入System.Data.OracleClient命名空间,但是默认情况下是没有该命名控件,此时,需要将程序集System.Data.OracleClient引入到项目中。引入程序集的方法是在项目名称上单击鼠标右键,在弹出的快捷菜单中选择“添加引用”命令,打开“添加引用”对话框。在该对话框中选择System.Data.OracleClient程序集,单击“确定”按钮,即可将其添加到项目中。

 

Command对象的常用属性及说明

属性名

说明

 CommandText

  获取或设置要对数据源执行的Transact-SQL语句或存储过程

 CommandTimeout

  获取或设置在终止执行命令的尝试并生成错误之前的等待

 CommandType

  获取或设置一个值,该值指示如何解释CommandText属性

 Connection

  获取或设置SqlCommand类的此实例使用的SqlConnection对象

 Parameters

  获取SqlParameterCollection对象

 Transaction

  获取或设置将在其中执行SqlCommand类的SqlTransaction对象

 UpdatedRowSource 

  获取或设置命令结果在由DbDataAdapter类的“Update”方法使用时,如何应用于DataRow对象            

Command对象的常用方法及说明

方法名

说明

 BeginExecuteNonQuery

  启动此SqlCommand对象描述的Transact-SQL语句或存储过程的异步执行

 BeginExecuteReader

  启动此SqlCommand对象描述的Transact-SQL语句或存储过程的异步执行,并从服务器中检索一个或多个结果集

 BeginExecuteXmlReader

  启动此SqlCommand对象描述的Transact-SQL语句或存储过程的异步执行,并将结果作为XmlReader对象返回

 CreateParameter

  创建SqlParameter对象的新实例

 EndExecuteNonQuery

  完成Transact-SQL语句的异步执行

 EndExecuteReader

  完成Transact-SQL语句的异步执行,返回请求的SqlDataReader对象

 EndExecuteXmlReader

  完成Transact-SQL语句的异步执行,将请求的数据以XML形式返回

 ExecuteNonQuery

  对连接执行Transact-SQL语句并返回受影响的行数

 ExecuteReader

  将CommandText对象发送到Connection类并生成一个SqlDataReader对象

 ExecuteScalar

  执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他行或列

 ExecuteXmlReader

  将CommandText对象发送到Connection类并生成一个XmlReader对象

 ResetCommandTimeout

  CommandTimeou属性重置为其默认值

 

1、设置数据源类型

    Command对象有3个重要的属性,分别是Connection、CommandText和CommandType。Connection属性用于设置SqlCommand使用的SqlConnection。CommandText属性用于设置要对数据源执行的SQL语句或存储过程。CommandType属性用于设置指定CommandText的类型。CommandType属性的值是CommandType枚举值,包括StoredProcedure(存储过程的名称)、TableDirect(表的名称)、Text(SQL文本命令)。

    如果要设置数据源的类型,则可以通过设置CommandType属性来实现。

 

2、执行SQL语句

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

(1)ExecuteNonQuery方法

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

//实例化SqlConnection变量conn

conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=");

//打开连接

conn.Open();

//创建一个SqlCommand对象

SqlCommand cmd = new SqlCommand();

//设置Connection属性,指定使其用conn连接数据库

cmd.Connection = conn;

//设置CommandText属性,以及执行的SQL语句

cmd.CommandText = "updatetb_command set 奖金=50 where 性别='女'";

//设置CommandType属性为Text,使其只执行SQL语句文本形式

cmd.CommandType = CommandType.Text;

//使用ExecuteNonQuery方法执行SQL语句

int i = Convert.ToInt32(cmd.ExecuteNonQuery());

label2.Text= "共有" + i.ToString() + "名女员工获得奖金";

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

 

(2)ExecuteReader方法

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

//实例化SqlConnection变量conn

SqlConnection conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=");

conn.Open();   //打开连接

//创建一个SqlCommand对象

SqlCommand cmd = new SqlCommand();

//设置Connection属性,指定其使用conn连接数据库

cmd.Connection = 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()){   //读取SqlDataReader

   //将内容添加到listView1控件中

    listView1.Items.Add(sdr[1].ToString());   

}

conn.Dispose();  //释放连接

 

(3)ExecuteScalar方法

    执行SQL语句,返回结果集中的第一行的第一列。如果结果集为空,返回空引用。示例代码如下所示:

conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=");

conn.Open();

//创建一个SqlCommand对象

SqlCommand cmd = new SqlCommand();

//设置Connection属性

cmd.Connection = conn;

//设置CommandText属性以及SQL语句

cmd.CommandText = "selectcount(*) from TableName";

//设置CommandText属性为Text,使其只执行SQL语句文本形式

cmd.CommandType = CommandType.Text;

//使用ExecuteScalar方法获取指定数据表中的数据数量

int i = Convert.ToInt32(cmd.ExecuteScalar());

label2.Text= "数据表中共有:" + i.ToString() + "条数据";

 

 

0 0
原创粉丝点击