亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ADO.NET讀書筆記系列之------SqlCommander和SqlDataReader對象

2024-07-21 02:06:30
字體:
來源:轉載
供稿:網友

一、特點介紹

⒈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())

           console.writeline(rdr[0]+rdr[1]);

        console.writeline();

    }while(rdr.nextresult()); 

⒋執行返回單值的查詢:

    …

    cn.open();

    sqlcommand cmd=new sqlcommand(“select count(*) from customers",cn);

    int customres = convert.toint32(cmd.executescalar());   

⒌執行參數化查詢和調用存儲過程:

    sqlcommand cmd = new sqlcommand("delqxry", cn);

    cmd.commandtype = commandtype.storedprocedure;

    sqlparameter parameterroleid = new sqlparameter("@id", sqldbtype.int, 4);

    parameterroleid.value = 444;

    cmd.parameters.add(parameterroleid);  

    cn.open();

    cmd.executenonquery(); 

⒍ 從 輸出參數中獲取數據:

    create procedure getcustomer(@companyname nvarchar(30) output,@customerid nchar(5)) as select @companyname=companyname from customers where [email protected]

    …

cmd.parameters[“@companyname”].direction =parameterdirection.output; 

 

⒎在transaction中執行查詢:

    …

    cn.open();

    sqltransaction txn=cn.begintransaction();

    string strsql=”insert into customers(…)values(…)”;

    sqlcommand cmd=new sqlcommand(strsql,cn,txn);

    int recordaffected = cmd.executenonquery();

    if(recordaffected ==1)

    {

        txn.commit();

    }

    else

    {

        txn.rollback();

    }

 

三、屬性方法事件介紹

⒈sqlcommand

ⅰ屬性

    ①commandtext: 要執行的 transact-sql 語句或存儲過程。默認為空字符串。

    ②commandtimeout: 等待命令執行的時間(以秒為單位)。默認為 30 秒。

    ③commandtype: commandtype 值之一。默認值為 text。



    ④connection: 與數據源的連接。默認值為空引用

    ⑤parameters: transact-sql 語句或存儲過程的參數。默認為空集合。

    ⑥transaction:指定用于查詢的事務處理

    ⑦updaterowsource:如果通過調用dataadapter對象的update方法來使用command,那么該屬性就用于控制影響當前datarow的查詢結果(默認值為both)

 

ⅱ方法

①cancel: 試圖取消sqlcommand的執行。如果沒有要取消的內容,則什么都不會發生。但如果有命令正在執行,而取消嘗試失敗,則不會生成異常。cancel方法還會導致command對象刪除datareader對象上所有未讀的行。

②createparameter:為查詢創建一個新參數。

③executenonquery:對連接執行transact-sql語句并返回受影響的行數。對于 update、insert 和 delete 語句,返回值為該命令所影響的行數。對于所有其他類型的語句,返回值為 -1。如果發生回滾,返回值也為 -1。

④executereader:將commandtext發送到connection并生成一個sqldatareader。

  public sqldatareader executereader(commandbehavior);



⑤executescalar:執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略額外的列或行。

⑥executexmlreader:將commandtext發送到connection并生成一個xmlreader。

⑦prepare:在 sql server 的實例上創建命令的一個準備版本。在調用 prepare 之前,應指定要準備的語句中的每個參數的數據類型。

⑧resetcommandtimeout:將commandtimeout屬性設置為默認值30秒。

 

ⅲ事件

⒉sqldatareader

ⅰ屬性

①depth:獲取一個值,該值指示當前行的嵌套深度。最外層表的深度為零。sql server .net framework 數據提供程序不支持嵌套并總是返回零值。

②fieldcount:獲取當前行中的列數。如果未放在有效的記錄集中,則為 0;否則為當前行中的列數。默認值為 -1。執行不返回行的查詢后,fieldcount 返回 0。

③hasrows:如果sqldatareader包含一行或多行,則為true;否則為false。

④isclosed:如果sqldatareader已關閉,則為true;否則為false。

⑤item:獲取以本機格式表示的列的值。

⑥recordsaffected:已更改、插入或刪除的行數;如果沒有任何行受到影響或語句失敗,則為 0;-1 表示 select 語句。

ⅱ方法

①close:關閉sqldatareader對象。如果返回值和查詢影響的記錄的數量不重要,則可以在調用close方法前調用關聯的sqlcommand對象的cancel方法,從而減少關閉sqldatareader所需要的時間。

②getname:獲取指定列的名稱。

③getordinal:在給定列名稱的情況下獲取列序號。

④getvalue:獲取以本機格式表示的指定列的值。

⑤getvalues:獲取當前行的集合中的所有屬性列。

⑥isdbnull:獲取一個值,該值指示列中是否包含不存在的或缺少的值。如果指定的列值與dbnull等效,則為true;否則為false。

⑦nextresult:當讀取批處理 transact-sql 語句的結果時,使數據讀取器前進到下一個結果。如果存在多個結果集,則為 true;否則為 false。

⑧read:使sqldatareader前進到下一條記錄,如果存在多個行,則為true;否則為false。必須調用read來開始訪問任何數據。在某一時間,每個關聯的sqlconnection只能打開一個sqldatareader,在上一個關閉之前,打開另一個的任何嘗試都將失敗。

ⅲ事件

⒊sqlparameter

ⅰ屬性

①dbtype:獲取或設置參數的dbtype。默認值為string。

②direction:獲取或設置一個值,該值指示參數是只可輸入、只可輸出、雙向還是存儲過程返回值參數。默認值為 input。



③isnullable:獲取或設置一個值,該值指示參數是否接受空值。如果接受空值,則為 true;否則為 false。默認為 false。

④parametername:獲取或設置 sqlparameter 的名稱。

⑤size:獲取或設置列中數據的最大大?。ㄒ宰止潪閱挝唬?。默認值是從參數值推導出的。

⑥sqldbtype:獲取或設置參數的sqldbtype。默認為nvarchar。sqldbtype和dbtype是相互連接的。設置dbtype會將sqldbtype更改為支持的sqldbtype。

⑦value:獲取或設置該參數的值。默認為空。

ⅱ方法

ⅲ事件
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲欧美日韩在线不卡| 日韩视频中文字幕| 亚洲欧美资源在线| 国产在线播放不卡| 亚洲国产婷婷香蕉久久久久久| 亚洲一区二区三区毛片| 91久久久久久久一区二区| 亚洲最大福利视频网站| 亚洲美女性视频| 精品久久久久久中文字幕大豆网| 欧美在线视频a| 亚洲国产欧美日韩精品| 激情久久av一区av二区av三区| 久久精品国产亚洲精品| 亚洲国产天堂久久综合| 国内精品久久久久久中文字幕| 久久精品电影网站| 精品久久久久久久久国产字幕| 国产精品电影网| 日韩一区二区三区在线播放| 亚洲成人免费网站| 夜夜嗨av色一区二区不卡| 97婷婷大伊香蕉精品视频| 亚洲欧美国产日韩天堂区| 亚洲在线一区二区| 精品视频在线观看日韩| 日韩av在线播放资源| 国内外成人免费激情在线视频| 92福利视频午夜1000合集在线观看| 久久久久北条麻妃免费看| 人人澡人人澡人人看欧美| 日韩美女视频中文字幕| 国产精品99久久99久久久二8| 中国人与牲禽动交精品| 亚洲精品小视频| 5252色成人免费视频| 91理论片午午论夜理片久久| 久久精品中文字幕电影| 国产热re99久久6国产精品| 538国产精品一区二区在线| 欧美性xxxx在线播放| 欧美激情亚洲视频| 日韩中文字幕不卡视频| 日韩免费观看av| 国产高清视频一区三区| 亚洲区中文字幕| 中文字幕精品在线| 欧美成人一区在线| 亚洲影院色在线观看免费| 7777精品久久久久久| 91av在线视频观看| 国内精品400部情侣激情| 国外视频精品毛片| 国产精品69av| 免费99精品国产自在在线| 尤物精品国产第一福利三区| 黑人巨大精品欧美一区二区一视频| 日韩av一区在线观看| 97在线观看视频| 日本视频久久久| 国产成人极品视频| 孩xxxx性bbbb欧美| 欧美电影免费观看| 久久精品视频亚洲| 国产精品啪视频| 一区二区三区美女xx视频| 日韩视频在线免费| 亚洲精品www久久久| 国产成人精品在线观看| 欧美视频在线观看免费网址| 欧美黑人巨大精品一区二区| 日本久久精品视频| 亚洲视频视频在线| 亚洲精品白浆高清久久久久久| 欧美日本亚洲视频| 久久精品一偷一偷国产| www.亚洲人.com| 久久久久久久电影一区| 黄色精品一区二区| 日韩欧美极品在线观看| 日韩亚洲在线观看| 国产精品成人国产乱一区| 亚洲欧美中文在线视频| 国产日韩亚洲欧美| 亚洲自拍欧美另类| 九九精品视频在线| 久久久久久久香蕉网| 青青在线视频一区二区三区| 九九视频直播综合网| 欧美风情在线观看| 97久久精品人搡人人玩| 日韩电视剧免费观看网站| 亚洲午夜av久久乱码| 自拍偷拍免费精品| 亚洲国产精品va在线观看黑人| 久久视频在线视频| 亚洲久久久久久久久久久| 欧美日韩一区二区三区| 成人免费观看a| 日韩视频―中文字幕| 狠狠躁夜夜躁人人爽超碰91| 国产97色在线|日韩| 亚洲xxx大片| 国产视频丨精品|在线观看| 欧美日韩视频在线| 一区国产精品视频| 国产精品福利在线观看网址| 欧美一乱一性一交一视频| 精品福利在线观看| 精品亚洲国产视频| 午夜精品一区二区三区在线播放| 久久免费观看视频| 亚洲自拍偷拍网址| 日韩经典中文字幕在线观看| 亚洲欧美中文日韩在线| 日韩欧美在线免费| 精品magnet| 欧美性视频精品| 日韩精品在线观看视频| 亚洲精品456在线播放狼人| 91在线中文字幕| 国产精品成人免费视频| 国产精品第2页| 午夜精品久久久久久久99黑人| 97超级碰碰碰| 18久久久久久| 国产91色在线播放| 国产精品伦子伦免费视频| 久久久久久网址| 96精品久久久久中文字幕| 欧美精品中文字幕一区| 91中文在线视频| 亚洲欧美日本伦理| 国产一区二区欧美日韩| 国产精品成人v| 97色在线观看免费视频| 久久国产精品电影| 日韩免费中文字幕| 亚洲自拍偷拍福利| 亚洲黄色在线看| 亚洲一区二区三区sesese| 国产成人亚洲精品| 久久久久久噜噜噜久久久精品| 亚洲欧美一区二区精品久久久| 97视频在线免费观看| 日韩国产精品亚洲а∨天堂免| 久久久国产视频91| 亚洲欧美成人网| 国产在线一区二区三区| 欧美性69xxxx肥| 国产一区二区精品丝袜| 精品一区二区三区电影| 久久国产精品久久国产精品| 国产精品国产三级国产aⅴ9色| 亚洲乱码av中文一区二区| 亚洲人午夜色婷婷| 亚洲欧美日韩天堂| 欧美俄罗斯乱妇| 91在线视频九色| 国内成人精品视频| 日韩av影院在线观看| 高清视频欧美一级| 成人激情视频在线观看| 国产精品一区专区欧美日韩|