二、DataSet
1、SqlDataReader是連接配接相關的, SqlDataReader中的查詢結果并不是放到程式中的,而是放在資料庫伺服器中,SqlDataReader隻是相當于放了一個指針(遊标),隻能讀取目前遊标指向的行,一旦連接配接斷開就不能再讀取。這樣做的好處就是無論查詢結果有多少條,對程式占用的記憶體都幾乎沒有影響。
2、SqlDataReader對于小資料量的資料來說帶來的隻有麻煩,優點可以忽略不計。ADO.Net中提供了資料集的機制,将查詢結果填充到本地記憶體中,這樣連接配接斷開、伺服器斷開都不影響資料的讀取。
3、代碼示例:
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);//Fill()執行查詢語句,将資料裝入資料集
(1)Fill()執行查詢語句,将資料裝入資料集。
(2)SqlDataAdapter da=new SqlDataAdaper(sqlStr,conn); //建立擴充卡對象,告訴它要做什麼,走哪條路去。
(3)DataSet ds=new DataSet(); //建立資料集對象(程式端的臨時資料庫)。
(4)da.Fill(ds); //調用fill方法,填充資料集。(先去資料庫查詢結果集,并把結果集傳回指派給資料集)。
4、SqlDataAdapter是DataSet和資料庫之間溝通的橋梁。資料集DataSet包含若幹表DataTable,DataTable包含若幹行DataRow。
foreach (DataRow row in dataset.Tables[0].Rows) row["Name"]
5、擴充卡擷取的資料集中可能會有多個資料表。