电竞比分网-中国电竞赛事及体育赛事平台

分享

ADO.NET SqlCommand - 斑點(diǎn)海豚 - 博客園

 deargem 2010-01-14

ADO.NET SqlCommand

一.創(chuàng)建SqlCommand對(duì)象的方法

1.cmd=new SqlCommand();  //直接創(chuàng)建
   cmd.Connection=cn;
   cmd.CommandText=strSQL;

2.cmd=new SqlCommand(strSQL,cn);  //調(diào)用構(gòu)造函數(shù)創(chuàng)建

3.cmd=cn.CreateCommand();   //使用SqlConnectiion對(duì)象的CreateCommand方法
   cmd.CommandText=strSQL;

二.執(zhí)行查詢 (基于SqlDataReader的操作方式)
cmd.ExecuteReader()  //返回一個(gè)SqlDataReader

讀取方法:

A.讀取幾列值
SqlDataReader rdr=cmd.ExecuteReader();
while (rdr.Read())
    Console.WriteLin(“{0} {1} {2:d},rdr[“OrderID”],rdr[“CustomerID”],rdr[“OrderDate”]”);  //當(dāng)存在可用列時(shí),只需要調(diào)用SqlDataReader的索引器,并傳遞列的名稱。SqlDataReader使用一般Object數(shù)據(jù)類型返回列的內(nèi)容。
rdr.Close();

B.讀取單一值
SqlDataReader rdr=cmd.ExecuteReader();
rdr.Read();
decimal decOrderTotal=(decimal)rdr[0];  //rdr[0] 表示檢查第一行第一列的數(shù)據(jù)

以上語句可以用一句語句代替:

decimal decOrderTotal=(decimal)cmd.ExecuteScalar();

2.執(zhí)行不返回結(jié)果集的查詢

cmd.ExecuteNonQuery()

可根據(jù)ExecuteNonQuery()方法的返回值來判斷執(zhí)行的結(jié)果。

3.其它

使用Using塊

using (SqlCommand cmd=new SqlCommand(strSQL,cn))

{

   try{

           using (SqlDatareader rdr=cmd.ExecuteReader())

            {

               while(rdr.read())

                       { …}

            }

       }

}

基于序號(hào)

int intcustomerIDOrdinal=rdr.GetOrdinal(“CustomerID”);

rdr[intcustomerIDOrdinal];

強(qiáng)類型getter

int intcustomerIDOrdinal=rdr.GetOrdinal(“CustomerID”);

rdr.GetString(intcustomerIDOrdinal)

應(yīng)當(dāng)總是使用適當(dāng)?shù)膹?qiáng)類型getter,它們與結(jié)果集中列所返回的數(shù)據(jù)相對(duì)應(yīng),如果不能確定調(diào)用哪種類型getter,可以調(diào)用GetFieldType方法,傳遞需要的列的序號(hào)為參數(shù)。

處理Null值

在處理字符串內(nèi)容之前,需確定該字符串已被初始化。
如果一個(gè)列的數(shù)據(jù)庫值為Null,并且調(diào)用SqlDataReader的一個(gè)強(qiáng)類型getter(返回一個(gè).NET數(shù)據(jù)類型如String,DataTime,Int32)則會(huì)產(chǎn)生一個(gè)SqlNullValueException.
string str;
if(str==null)
        空值出錯(cuò)提醒
else
        intLength=str.Length;

如果正在從一個(gè)可能包含Null值的列中獲取數(shù)據(jù),請(qǐng)?jiān)趪L試訪問前檢查其值。

使用isDBNull方法(只接受一個(gè)表示列序號(hào)的整數(shù))

while (rdr.Read())

{

   order=new Order()

   order.OrderID=rdr.GetInt32(0);

   …

   if(rdr.IsDBNull(3))

              order.ShippedDate=null;

   else

              order.ShippedDate=rdr.GetDateTime(3);

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多