三、操作篇(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();
上面已经介绍了常用的属性和方法,下面一节将会介绍更高级更深层次的.