9.3 SqlCommand对象
SqlCommand对象表示执行操作数据库的命令,这个命令可以是SQL语句,也可以是存储过程。通过SqlCommand对象执行的操作类型有多个,如查询单条或多条数据、添加数据、删除数据、修改数据以及存储过程等。
9.3.1 创建SqlCommand对象
SqlConnection对象提供CreateCommand()方法,通过该方法可以创建并返回一个SqlCommand对象。代码如下。
SqlCommand command = conn.CreateCommand();
除了调用上述方法外,还可以直接通过new创建SqlCommand对象。实例化SqlCommand对象时,有以下4种构造函数。
SqlCommand command = new SqlCommand(); SqlCommand command = new SqlCommand(string cmdText); SqlCommand command = new SqlCommand(string cmdText, SqlConnection conn); SqlCommand command = new SqlCommand(string cmdText, SqlConnection conn, SqlTransaction trans);
其中,cmdText表示执行添加、查询、删除和搜索的SQL语句或者存储过程;conn表示SqlConnection的实例对象;trans表示SqlTransaction的实例对象。
【范例4】
首先创建SqlConnection对象的实例,接着创建SqlCommand对象,在创建时传入两个参数,第一个参数表示执行的SQL语句,第二个参数表示SqlConnection对象。代码如下。
string connectionString = "Data Source=SJB; Initial Catalog=master; User ID=sa; Pwd = 123456"; SqlConnection conn = new SqlConnection(connectionString); conn.Open(); SqlCommand command = new SqlCommand("SELECT * FROM spt_monitor; ", conn);
9.3.2 SqlCommand对象的属性
创建SqlCommand对象之后,可以调用该对象的属性进行设置,常用的属性及其说明如表9-5所示。
表9-5 SqlCommand对象的常用属性
在表9-5中,CommandType属性的值是System.Data.CommandType枚举值之一,取值说明如下。
(1)Text:SQL文本命令。
(2)TableDirect:表的名称。
(3)StoredProcedure:存储过程的名称。
【范例5】
创建SqlCommand对象的实例,然后设置该对象的Connection、CommandText和CommandType等属性。代码如下。
SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = "SELECT * FROM spt_monitor; "; command.CommandType = System.Data.CommandType.Text;
9.3.3 SqlCommand对象的方法
SqlCommand对象还提供了一系列的方法,通过这些方法可以完成对数据库的添加、删除、修改以及查询操作。如表9-6所示列出了SqlCommand对象的常用方法,并对这些方法进行说明。
表9-6 SqlCommand对象的常用方法
【范例6】
ExecuteScalar()方法执行查询,并返回查询所返回的结果集中第一行的第一列。如果有多行多列,则忽略其他列或行。简单来说,ExecuteScalar()方法返回第一行第一列的结果。下面通过该方法查询master数据库中spt_monitor表中的总记录,然后将结果输出。代码如下。
string connectionString = "Data Source=SJB; Initial Catalog=master; User ID=sa; Pwd = 123456"; SqlConnection conn = new SqlConnection(connectionString); //创建SqlConnection对象 conn.Open(); //打开数据库连接 SqlCommand command = conn.CreateCommand(); //创建SqlCommand对象 command.CommandText = "SELECT COUNT(*) FROM spt_monitor; "; command.CommandType = System.Data.CommandType.Text; int total = Convert.ToInt32(command.ExecuteScalar()); Response.Write("spt_monitor表中的总记录:" + total); conn.Close(); //关闭数据库连接
在使用SqlCommand对象操作数据库表之前,必须确保已经成功连接数据库,使用SqlCommand对象的一般步骤如下。
(1)创建数据库连接对象。
(2)创建SqlCommand的实例对象。
(3)执行SQL语句或者存储过程。
(4)关闭数据库连接。