Sqlcommand类提供用户一个sql操作接口,使得用户可以完成设置Sql命令、执行查询操作、获取查询结果等工作。对sql数据库操作的时候,必须通过sqlcommand来操作操作数据库,所以灵活运用数据库,就要熟练掌握sqlcommand的的常用属性和方法。
SqlCommand的常用属性
1.CommandType属性是一个美剧类型,其值可以是text、storedProcedure、tableDirect,more之是text。
(1)默认情况下是text,.如果commandType为text那么,此sqlcommand对象的commandText就要执行sql命令。
如下:strring sql =”delete * from student”
Sqlcommand cmd =newsqlcommand(sql,conn);
cmd.ExcuteNoQuery
(2), 当CommandType设置为StoredProcedure时,CommandText存放的就是所以执行的存储过程的名称。需要注意的时,当存储过 程的名称中包含空格或保留字,则需要将存储过程的名称放在方括号中;如果名称中包含右方括号字符,则需要将它们放在双右方括号内。因此,对于名为"My Stored Proc"的存储过程,其CommandText应为"[My Stored Proc]" ;对于名为"My[Stored]Proc"的存储过程,CommandText应为"[My[Stored]]Proc]"。当然,存储过程名称不应当是保留字,也不应当包括空格或方括号。
(3),tabledirect,这个属行暂时没有用过,
2. CommandText是一个字符串,如上所述在不同的CommandType中,commandText具有不同的含义。如果CommandType是text则commandText就是sql语句,如果是storedProdure,则表示commandText是存储过程。
3.connection属性包含sqlCommand用于数据库通信的sqlConnection对象。
4.CommandTImeOut属性
CommandTimeout指定了Command等待查询结果第一行数据到达的超时时间(单位为秒) , 默认值为30。如果在CommandTimeout时间内仍未完成查询,则Command将引发异常。 需要说明的是,这里的超时时间是针对第一行数据到达的时间而言的,如果第一行数据在CommandTimeout 内已经到达(即已经开始返回结果) ,那么不管整个查询结果返回过程花费多长时间 ,此次查询都不会超时。也就是说,只要在CommandTimeout 内查询开始返回结果,该查询就不会超时。
5.parameters表示sqlcommand传入的参数可以是单个的参数也可以是数组
cmd = new SqlCommand(cmdText, getConn())
cmd.CommandType= ct;
SqlParameter[]paras = new SqlParameter[]{new SqlParameter ("@caid",caid )};
SqlParameter[]paras = new SqlParameter[]{new SqlParameter ("@caid",caid )};
cmd.Parameters.AddRange(paras);
res =cmd.ExecuteNonQuery();
二,sqlcommand类的方法
1, 执行查询操作
(1).ExecuteReader,该方法返回一个sqldatareader对象,sqldatareader对象提供只读单向数据的快速传递,单向:您只能依次读取下一条数据;只读:DataReader中的数据是只读的,不能修改;相对地,DataSet中的数据可以任意读取和修改.
它有一个很重要的方法,是Read,是个布尔值,作用是前进到下一条数据,一条条的返回数据,当布尔值为真时执行,为假时跳出。
另外:SqlDataadapter,SqlDataAdaper 数据适配器SqlDataAdapter是 DataSet和 SQL Server之间的桥接器,用于检索和保存数据。SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可更改DataSet中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。
(2).ExecuteNonQuery仅返回受影响的行数(此方法是为不需要返回结果集的"操作查询"设计的, 如 INSERT ,DELETE,CREATE TABLE等)。
(3). ExecuteScalar返回查询结果第一行第一列的数据(此方法是为查询单一值,如COUNT(*) ,的语句设计的)
三,sqlCommand对像的创建
.net 提供了三种创建sqlcommand对像的方法
1. 直接创建一个新实例,然后设置适当属性:
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL;
2. 利用构造函数指定查询字符串和SqlConnection连接:
SqlCommand cmd = new SqlCommand(strSQL,conn);
3. 调用Sqlconnection类的CreateCommand方法:
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = strSQL;
四,sqlcommand的构造函数
1. sqlcommand 初始化sqlcommand类的新实例
2. sqlcommand(string)用查询文本初始化sqlcommand类的新实例
3. sqlcommand(string,sqlconnection)初始化具有查询文本和sqlconnection的sqlcommand类的新实例
4. sqlcommand(string,sqlconnection,sqltranction)使用查询文本、一个 SqlConnection 以及 SqlTransaction 来初始化 SqlCommand 类的新实例。