C#:执行SQL语句Command
2014-07-28 23:06
344 查看
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对象的常用属性及说明
Command对象的常用方法及说明
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() + "条数据";
►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对象 |
方法名 | 说明 |
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() + "条数据";
相关文章推荐
- 在c#中执行sql语句时传递参数
- C#执行SQL语句报超时已过期
- C#执行SQL语句(带事务)
- ADO.NET_第八篇_OracleCommand_执行多个SQL语句01
- 在C#中执行sql语句时传递参数的方法
- C#执行多行sql语句方法
- 在c#中执行sql语句时传递参数的小经验
- C#读取*.sql文件,并执行里面的SQL语句
- OracleCommand 执行带参数据的SQL语句
- c#实现用SQL池(多线程),定时批量执行SQL语句
- C#中 一次执行多条带GO的sql语句
- 在c#中执行sql语句时传递参数的小经验_C#教程
- asp.net执行sql语句(C#)
- 在c#中执行sql语句时传递参数的小经验
- 在c#中执行sql语句时传递参数的小经验
- 在c#中执行sql语句时传递参数的小经验_C#教程
- C#(.net)中的一次连接数据库执行多条sql语句(两种方法)
- C#(.net)中的一次连接数据库执行多条sql语句
- 如何执行SQL语句(C#)
- c#实现用SQL池(多线程),定时批量执行SQL语句