代码改变世界

sqlcommand 操作数据库

2011-07-13 11:22  myjava2  阅读(586)  评论(0编辑  收藏  举报

     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 类的新实例。