代码改变世界

ADO.NET 之 三

2012-12-31 13:06  y-z-f  阅读(347)  评论(0编辑  收藏  举报

 

三、操作篇(1)

1.构造函数

 1 // 1.
 2 SqlCommand cmd = new SqlCommand(); //默认构造函数
 3 /*
 4    相关的默认值为以下:
 5    CommandText : 空字符串
 6   CommandTimeout : 30s
 7    CommandType : CommandType.Text
 8    Connection : NULL
 9 */
10 
11 //2.
12 SqlCommand cmd = new SqlCommand( 
13      "SELECT * FROM NORTHWND"         //T-SQL语句
14   );
15 
16 //3.
17 using(SqlConnection con = new SqlConnection("...") )
18 {
19      SqlCommand cmd = new SqlCommand(
20                    "SELECT * FROM NORTHWND",   //T-SQL语句
21              con                                           //数据库连接实例
22 }
23 
24 //4.
25 using(SqlConnection con = new SqlConnection("...") )
26 {
27      SqlTransaction tr = con.BeginTransaction("NorthwndTransaction"); //创建事务 后面章节将会介绍
28      SqlCommand cmd = new SqlCommand(
29                    "SELECT * FROM NORTHWND", //T-SQL语句
30                    con,                                        //数据库连接实例
31                    tr                                            //事务实例
32     );
33 }

2.下面我们将介绍经常使用的属性和方法

2.1 设置或获取数据库连接实例

1 using( SqlConnection con = new SqlConnection("...") )
2 {
3      SqlCommand cmd = new SqlCommand();
4      cmd.Connection = con;    //设置有关的数据库连接实例
5 }

2.2 设置或获取超时时间

1 using( SqlConnection con = new SqlConnection("...") )
2 {
3      SqlCommand cmd = new SqlCommand();
4      cmd.CommandTimeout = 45;  //设置超时时间为45s
5 }
6 
7 //注意: 0 表示无限等待
8 //在异步中忽略该参数

2.3 获取或设置一个值,只是CommandText的解释

1 using( SqlConnection con = new SqlConenction())
2 {
3       SqlCommand cmd = new SqlCommand();
4       cmd.CommandType = CommandType.StoredProcedure;//设置如何解释 CommandType 的解释
5 }
6 //默认为:CommandType.Text

2.4 获取或设置需要执行的T-SQL语句、表明或存储过程

1 using( SqlConnection con = new SqlConnection() )
2 {
3      SqlCommand cmd = new SqlCommand();
4      cmd.CommandText = "SELECT * FROM NORTHWND";//设置需要指定 T-SQL 语句、表名或存储过程
5 }

2.5 设置或获取 T-SQL 语句或存储过程的参数

 1 using (SqlConnection connection = new SqlConnection("..."))
 2       {
 3           SqlCommand cmd = new SqlCommand();
 4           cmd.Connection = con;
 5           cmd.CommandText = "UPDATE Sales.Store SET Demographics = @demographics "
 6           + "WHERE CustomerID = @ID;";
 7           command.Parameters.Add("@ID", SqlDbType.Int);//增加一个参数
 8           command.Parameters["@ID"].Value = customerID; //设置改参数的值
 9           command.Parameters.AddWithValue("@demographics", demoXml);//增加并设置改参数的值
10       }

2.6 尝试取消 SqlCommand 的执行

1 using( SqlConnection con = new SqlConnection("...") )
2 {
3         SqlCommand cmd = new SqlCommand();
4         con.Open();
5 cmd.Connection = con; 6 cmd.CommandText = "SELECT * FROM NORTHWND"; 7 cmd.ExecuteReader();
8 cmd.Cancel(); //尝试取消执行 9 }

2.7 执行 T-SQL 语句并返回受影响的行

1 using( SqlConnection con = new SqlConnection("...") )
2 {
3      SqlCommand cmd = new SqlCommand();
4      con.Open();
5 cmd.Conenction = con; 6 cmd.CommandText = "UPDATE NORTHWND SET NAME = 'AD' WHERE ID = 1"; 7 int rows = cmd.ExecuteNonQuery(); //返回该语句执行后受影响的行数 8 }

2.8 执行 CommandText 并返回一个 SqlDataReader

1 using( SqlConnection con = new SqlConenction("..") )
2 {
3      SqlCommand cmd = new SqlCommand();
4      con.Open();
5 cmd.Connection = con; 6 cmd.CommandText = "SELECT * FROM NORTHWND"; 7 SqlDataReader reader = cmd.ExecuteReader(); //执行CommandText并返回一个 SqlDataReader 8 }

2.9 带参数的 ExecuteReader

1 using( SqlConnection con = new SqlConnection("...") )
2 {
3     SqlCommand cmd = new SqlCommand();
4     con.Open();
5     cmd.Conencion = con;
6     SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); //当 reader 关闭时 con 也会关闭
7 }

该参数可选值如下:

CommandBehavior:

      Default:默认

      SingleResult:查询返回一个结果集

      SchemaOnly:查询只返回列信息

      KeyInfo:此查询返回列和主键信息

      SingleRow:查询应返回一行

     CloseConnection:当关联的 DataReader 关闭时,相关的数据库连接实例也关闭

2.10 返回结果集中的第一行第一列

1 ExecuteScalar();

 

上面已经介绍了常用的属性和方法,下面一节将会介绍更高级更深层次的.