- 爱易网页
-
数据库教程
- ADO.NET读书笔记系列之------SqlCommander和SqlDataReader对象
日期:2013-12-25 浏览次数:20528 次
一、特点引见
⒈SqlCommand:表示要对SQL Server数据库执行的一个Transact-SQL语句或存储过程。
⒉SqlDataReader:提供一种从数据库读取只进的行流的一种方式。若要创建SqlDataReader,必须调用SqlCommand对象的ExecuteReader方法,而不直接使用结构函数。应该尽可能迅速的关闭SqlDataReader对象。
⒊SqlParameter:表示SqlCommand的参数,也可以是它到DataSet列的映射。
二、使用引见
⒈创建SqlCommand对象:
string strConn,strSQL;
strConn=”…………”;
strSQL=”Select CustomerID,CompanyName from Customers”;
SqlConnection cn = new SqlConnection(strConn);
cn.Open();
SqlCommand cmd;
cmd=new SqlCommand();
cmd.CommandText=strSQL;
cmd.Connection=cn;
cmd=new SqlCommand(strSQL,cn);
⒉执行无前往行的查询:
string strConn,strSQL;
strConn=”……”;
strSQL=”Update Customers SET CompanyNme=’NewName’where CustomersID=’ALFKI’”;
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=new SqlCommand(strSQL,cn);
int RecordsAffercted=cmd.ExecuteNonQuery();
if(RecordsAffercted ==1)
……
else
…………
⒊用SqlDataReader对象检查查询结果:
① 获取结果
string strConn,strSQL;
strConn=”……”;
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
strSQL=”Select CustomerID,CompanyName from Customers”;
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataReader rdr=cmd.ExecuteReader();
While(rdr.Read())
Console.Writeline(rdr[“CustomerID”]+rdr[“CompanyName”]);
Rdr.Close();
② 更快获取
Ⅰ使用基于序号的查找
……
SqlDataReader rdr=cmd.ExecuteReader();
int CustomerIDOrdinal = rdr.GetOrdinal(“CustomerID”);
int CompanyNameOrdinal = rdr.GetOrdinal(“CompanyName”);
while(rdr.Read())
Console.WriteLine(rdr[CustomerIDOrdinal]+rdr[CompanyNameOrdinal]);
rdr.Close();
Ⅱ使用适当的类型指定Get方法
……
SqlDataReader rdr=cmd.ExecuteReader();
int CustomerIDOrdinal = rdr.GetOrdinal(“CustomerID”);
int CompanyNameOrdinal = rdr.GetOrdinal(“CompanyNameOrdinal”);
while(rdr.Read())
Console.WriteLine(rdr.GetString(CustomerIDOrdinal)+rdr.GetString(CompanyNameOrdinal));
rdr.Close();
③获取多个结果
…
cn.Open();
string strSQL =”select CustomerID,CompanyName from Customers;”+“select OrderID,CustomerID from Orders;”;
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataReader rdr=cmd.ExecuteReader();
do
{
while(rdr.Read())