国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

詳談ASP.NET的DataReader對象

2019-11-17 01:53:09
字體:
來源:轉載
供稿:網友

詳談asp.net的DataReader對象

最近頻繁用到了DataReader這個對象,其實對于DataReader,之前也用到過,說實話我個人覺得很不好懂。相比之下覺得DataSet對象好用的多,但是有時取出的數據不需要很多的時候,DataReader還是很有用的。

在此就對DataReader進行一下解釋,這也是個人對DataReader的理解,難免會有錯誤,大家互相學習下。有理解上的錯誤也希望大家能過指正出來,幫助我更好的理解,謝謝。

首先DataReader相比于DataSet,DataReader是一個抽象類,所以不能用

DataReader DR = new DataReader(),來構造函數創建對象,如果要創建一個DataReader對象,必須通過command對象的ExecuteReader方法。

其次,DataReader對象訪問數據的方式,只能順序讀取數據,而且不能寫入數據(這點DataSet占據絕對的優勢),所謂的順序讀取數據是將數據表中的行從頭至尾一次讀出。DataReader被創建時,紀錄指針在表的最前端,可以使用Read方法每次從表中讀取一條紀錄。

總的來說DataSet存的是二維數組,而DataReader存的是一維數組。而且DataSet采用的是非連接的傳輸模式訪問數據源,一旦用戶所請求的數據讀入DataSet,與數據庫的連接就關閉,而DataReader則要時刻保持與數據庫連接狀態。

就我來說,重要的和常用的屬性和方法:

FieldCount屬性 獲取DataReader對象所包含的紀錄行數

Close() 關閉DataReader對象

其實有各種GetBoolean(col),GetChar(col),GetString(col),GetDateTime(col),GetInt32()等等獲取序號為col的列的值,而這些基本上可以被GetValue(col)方法所取代。

GetValue(col) 獲取序號為col的列的值

GetValues(values) 獲取所有字段的值,并將字段值存放到values數組中

GetValues(values)方法原來我不會用,特別是對于這個values數組是哪里來的,以及如果自定義該定義為什么類型呢,后來百度就知道了,用這個方法之前,Object[] values = new Object[sqlrd.FieldCount];這個是定義values數組的方法前提。

Read() 讀取下一條紀錄,返回布爾型,返回true,則表示有下一條紀錄。一般這個方法與while()循環一起用。是DataReader對象最重要的一個方法。

其他的無關痛癢的方法:(我覺得這個在提取數據的時候,不知道具體的數據類型,用來查看數據的數據類型的作用居多,或者用來查找問題調試吧。反正我一般用不到這些個方法)

GetDataTypeName(col) 獲取序號為col的列的來源數據類型名

GetFieldType(col) 獲取序號為col的列的數據類型,一般顯示會是System.**

GetName(col) 獲取序號為col的列的字段名

GetOrdinal(name) 獲取字段名為name的列的序號

?
  1. <source id="ibq8n"><ins id="ibq8n"></ins></source>
    1. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960PRotected void Page_Load(object sender, EventArgs e){string price = Request.QueryString["價格"];string con = ConfigurationManager.ConnectionStrings["con"].ToString();SqlConnection sqlcon = new SqlConnection(con);string sql = "select * from Cloths where 價格 = '" + price + "'";//string sql = "select * from Cloths";sqlcon.Open();SqlCommand sqlcom = new SqlCommand(sql, sqlcon);SqlDataReader sqlrd;sqlrd = sqlcom.ExecuteReader();Response.Write("獲取DataReader對象包含的記錄行數,注意這里DataReader的結構跟數據庫的結構是不一樣的,它把數據庫的一行轉換成了一列:" + sqlrd.FieldCount);Response.Write("<br>");Response.Write("獲取序號為0的列的來源數據類型名:" + sqlrd.GetDataTypeName(0));Response.Write("<br>");Response.Write("獲取序號為0的列的數據類型:" + sqlrd.GetFieldType(0));Response.Write("<br>");Response.Write("獲取序列號為0的列的字段名:"+sqlrd.GetName(0));Response.Write("<br>");Response.Write("獲取字段名為品牌的列的序號:"+sqlrd.GetOrdinal("品牌"));Response.Write("<br>");while (sqlrd.Read()){Response.Write("<br>");Response.Write(sqlrd["id"] + "," + sqlrd["品牌"] + "," + sqlrd["價格"] + "," + sqlrd["數量"]);Response.Write("<br>");Response.Write("<br>");Response.Write("下面的顯示要注意,為什么序列號為0的是品牌而不是id,雖然GridViewCommon頁面第一列是id,不過這里是要充分尊重數據庫的結構,可以看出數據庫中第一列是品牌!");Response.Write("<br>");Response.Write("這里通過GetString函數取出序號為0的列的數據,這里要根據數據的不同類型選用不同的Get函數,可能是GetChar(),GetInt32()等等:"+sqlrd.GetString(0));//這里可以看出GetValue函數可以不需要事先知道每一列的數據類型就可以取出數據,所以盡量用GetValue函數Response.Write("<br>");Response.Write("這里通過GetValue函數取出序號為0的列的數據,不需要管數據時什么類型,這里注意跟上面的比較:" + sqlrd.GetValue(0));Response.Write("<br>");Response.Write("<br>"java plain"
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      主站蜘蛛池模板: 长阳| 南汇区| 宜川县| 微山县| 外汇| 准格尔旗| 浦城县| 黑山县| 久治县| 龙泉市| 玉溪市| 阿拉善右旗| 昌黎县| 莒南县| 金阳县| 云阳县| 马山县| 南雄市| 辽宁省| 荣昌县| 乌恰县| 南部县| 宾川县| 石首市| 井陉县| 洪江市| 屏东县| 保德县| 绥德县| 林州市| 绥江县| 于田县| 贵德县| 治多县| 麻江县| 青田县| 嘉义市| 襄城县| 民丰县| 明星| 乌恰县|

        <small id="ibq8n"><tbody id="ibq8n"><noframes id="ibq8n"></noframes></tbody></small>