DataSet多表關聯實現本地數據復雜的查詢_第1頁
DataSet多表關聯實現本地數據復雜的查詢_第2頁
DataSet多表關聯實現本地數據復雜的查詢_第3頁
DataSet多表關聯實現本地數據復雜的查詢_第4頁
DataSet多表關聯實現本地數據復雜的查詢_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、如果要顯示兩張數據庫表的記錄,最簡單的方法是檢索時將兩張表中你要的數據一次檢索 出來,放入同一個DataTable來顯示。如果要顯示兩個以上DataTable中的數據,則需要將DataTable放入DataSet并建立relation 就可以顯示了。下面是剛做的一個例子。另外,父表一定要有主鍵。建立關聯時要用主鍵。private void button1_Click(object sender, System.EventArgs e)DataTable dtName = new DataTable(NameDt);dtName.Columns.Add(ID”, typeof(string);d

2、tName.Columns.Add(Name”, typeof(string);dtName.PrimaryKey = new DataColumn dtName.ColumnsID ;dtName.Rows.Add(1, Name1);DataTable dtAddress = new DataTable(AddressDt);dtAddress.Columns.Add(ID”, typeof(string);dtAddress.Columns.Add(Address”, typeof(string);dtAddress.Rows.Add(1, Address1);dtAddress.Row

3、s.Add(1, Address2);DataSet ds = new DataSet();ds.Tables.Add(dtName);ds.Tables.Add(dtAddress);/關鍵!建立表之間的關聯ds.Relations.Add(ForName, dtName.ColumnsID, dtAddress.ColumnsID);/在子表中添加計算列,引用父表的數據。dtAddress.Columns.Add(Name”, typeof(string), Parent(ForName).Name);dataGridView1.AutoGenerateColumns = false;da

4、taGridView1.DataSource = ds;dataGridView1.DataMember = AddressDt;DataSet多表關聯實現本地數據復雜的查詢c-sharp view plaincopyDataSet ds = new DataSet();2./提取第一個表放在ds中dp.CommandText = SELECT * FROM ss_RolesInAction;ds.Tables.Add(dp.ExecuteDataTable(ss_RolesInAction);6./提取第二個表放在ds中dp.CommandText = SELECT * FROM ss_Ac

5、tion;ds.Tables.Add(dp.ExecuteDataTable(ss_Action);10./提取第三個表放在ds中dp.CommandText = SELECT * FROM as_SiteMap;ds.Tables.Add(dp.ExecuteDataTable(as_SiteMap);14.建立關系 ss_Action.FID = ss_RolesInAction.FActionID , ss_RolesInAction.FActionID 為外鍵ds.Relations.Add(relation1, ds.Tables1.ColumnsFID, ds.Ta bles0.C

6、olumnsFActionID);建立關系 as_SiteMap.ID = ss_RolesInAction.FNodeID , ss_RolesInAction.FNodeID 為外鍵ds.Relations.Add(relation2, ds.Tables2.ColumnsID, ds.Tab les0.ColumnsFNodeID);19.20./查詢條件測試1:對父表查詢獲取子表測試/條件為 ss_Action.FID 等于 6E7BB6B5-4DDA-4BB9-A156-71288CEF16B2 的或是 ss_RolesInAction.FActionID 等 于 DB893F4E-

7、B411-4FC0-9735-D5E9B7823083 或是 as_SiteMap.id 等于 7 的/因為已經建立三個表的關系,所以,無論查詢條件是什么都會跟上關系中的 條件即:/ss_Action.FID = ss_RolesInAction.FActionID AND as_SiteMap.ID = ss_RolesInAction.FNodeID/當我們指定的查詢條件為空時會根據關聯關系查詢以下條件中的完整關聯 關系是這樣的/(ss_Action.FID = ss_RolesInAction.FActionID AND as_SiteMap.ID =ss_RolesInAction.F

8、NodeID ) and ss_Action.FID=6E7BB6B5-4DDA-4BB9-A156-7128 8CEF16B2 or ss_RolesInAction.FActionID= DB893F4E-B411-4FC0-9735-D5E9B78230 83 or as_SiteMap.id=7DataView dv = ds.Tables0.DefaultView;dv.RowFilter = parent(relation1).FID=6E7BB6B5-4DDA-4BB9-A156-7 1288CEF16B2 or FActionID= DB893F4E-B411-4FC0-973

9、5-D5E9B7823083 or parent( relation2).id=7;29./查詢條件測試2:對子表查詢獲取父表測試/因為子表與父表是多對一的關系所以我們對子表查詢時會返回多個值所 以使用MAX函數DataView dv = ds.Tables1.DefaultView;dv.RowFilter = max(child(relation1).FActionID) in (FFD953C4-09 20-4558-B87F-3A25CFB15754,FC5C91F5-45ED-4B3E-8E14-C2391B9A6B14) ;/這個查 詢條件中無法關聯as_SiteMap查詢條件因為

10、沒有查詢表as_SiteMap和返回表ss_Action的條件34.this.GridView1.DataSource = dv;this.GridView1.DataBind();在Winform中將數據庫中的多張表同時顯示在多個DataGridView中的方法2009-08-28 12:11:05|分類:C#|舉報|字號訂閱方法一:使用SqlDataAdapter向DataGridView添加數據時,可以在其參數中添加多條SQL語句,查詢出的結果分別保存在多個DataSet中,在為多個DataGridView指定數據源時,將DataSet中的多張 表依次賦給每個DataGridVie即可。

11、關鍵代碼:private void Form1_Load(object sender, EventArgs e)using (SqlDataAdapter da = new SqlDataAdapter(select * fromProduct;select * from Product,DBService.Conn)DataSet ds = new DataSet();da.Fill(ds);this.dataGridViewl.DataSource = ds.Tables0;this.dataGridView2.DataSource = ds.Tables1;方法二在使用SqlDataReader向DataGridView添加數據時,也是在其參數中添加多條SQL語句,但不同的是,在為DataGridView指定數據源時,可以利用DataReader對象的Read()和NextResult()方法,并且以for循環的方式來顯示在多個DataGridView中;關鍵代碼:private void button1_Click(object sender, EventArgs e)using (SqlCommand cmd = new SqlCommand(select * from jobs;select * from sale

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論