亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# dataset存放多張表的實(shí)例

 更新時(shí)間:2021年01月19日 10:46:10   作者:路人甲JIA  
這篇文章主要介紹了C# dataset存放多張表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

在C#中用同一個(gè)dataset保存從數(shù)據(jù)庫中取出的多張表:

cmd.CommandText = "select * from table1;";
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd); //實(shí)例化一個(gè)類,它用于連接C#與數(shù)據(jù)庫,并執(zhí)行cmd語句且將結(jié)果緩存到適配器中
DataSet thedataset = new DataSet(); //實(shí)例化一個(gè)dataset,實(shí)例名為thedataset(通常被定義為ds)
da.Fill(thedataset, "thetable1"); //將適配器中的內(nèi)容填充到dataset的thetable1表中, thetable1同時(shí)被建立
cmd.Parameters.Clear(); //清空cmd內(nèi)容,如果不清空下次使用時(shí)會(huì)拋出異常
cmd.CommandText = "select * from table2;";
da = new NpgsqlDataAdapter(cmd);
da.Fill(thedataset, "thetable2"); //將適配器中的內(nèi)容填充到dataset的thetable2表中, thetable2同時(shí)被建立
cmd.Parameters.Clear(); //清空cmd內(nèi)容
...
int count = thedataset.Tables["thetable1"].Rows.Count; //獲取表thetable1的行數(shù)
string a = thedataset.Tables["thetable2"].Rows[1][0].ToString().; //獲取表thetable2第2行第1列的值

補(bǔ)充:在DataSet中訪問多個(gè)表

ADO.Net模型有一個(gè)很大的優(yōu)點(diǎn),就是DataSet對(duì)象可以跟蹤多個(gè)表和它們之間的關(guān)系。這表示可以在一個(gè)操作的不同程序段之間傳遞完整的相關(guān)數(shù)據(jù)集,體系結(jié)構(gòu)內(nèi)在地維護(hù)數(shù)據(jù)之間關(guān)系的完整性。

ADO.Net中的DataRelation對(duì)象用于描述DataSet中的多個(gè)DataTables對(duì)象之間的關(guān)系。每個(gè)DataSet都包含DataRelations的Relations集合,以查找和操縱相關(guān)表。DataSet的Relations屬性是一個(gè)DataRelation對(duì)象的集合,DataRelation對(duì)象表示這個(gè)DataSet之間表之間的關(guān)系。要?jiǎng)?chuàng)建一個(gè)新的DataRelation,可以使用Relations的Add()方法,該方法接收表示關(guān)系的字符串名和兩個(gè)DataColumn(父列后跟子列)。比如:要?jiǎng)?chuàng)建Customers表的CustomerID列和Orders表的CustomerID列之間的關(guān)系 ,應(yīng)使用下面的語法,把它們的關(guān)系命名為CustOrders。

DataRelation custOrderRel = ds.Relations.Add("CustOrders", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);

為了使用有關(guān)系,需要從一張表的行進(jìn)入另一張表的關(guān)聯(lián)行,這就是對(duì)關(guān)系導(dǎo)航。通常導(dǎo)航是指從一張表的父行進(jìn)入另一張表的子行。那么假如給定父表中的一行,如何獲取子表中與其對(duì)應(yīng)的所有行呢?我們可以使用DataRow對(duì)象的GetChildRows()方法提取這些行。示例:一個(gè)顧客(Customers)表包含有一個(gè)或多個(gè)訂單(Orders)表,建立這兩個(gè)表之間的數(shù)據(jù)并提取數(shù)據(jù)的代碼如下。

static void Main(string[] args)
    {
      string connStr = @"Data Source=.\SQLEXPRESS; AttachDbFilename='C:\SQL Sever 2000 Sample Databases\NORTHWND.MDF';Integrated Security=True;User Instance=true";
      SqlConnection conn = new SqlConnection(connStr);
      conn.Open();
      //創(chuàng)建用于保存修改的數(shù)據(jù)的適配器
      SqlDataAdapter adapter = new SqlDataAdapter("select CustomerID,CompanyName from Customers", conn);
      SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
      //創(chuàng)建數(shù)據(jù)集
      DataSet ds = new DataSet();
      //創(chuàng)建讀取Customers表的適配器
      SqlDataAdapter custAdapter = new SqlDataAdapter("select * from Customers", conn);
      //創(chuàng)建讀取Orders表的適配器
      SqlDataAdapter orderAdapter = new SqlDataAdapter("select * from Orders", conn);
      //填充兩個(gè)表的數(shù)據(jù)并放到DataSet中
      custAdapter.Fill(ds, "Customers");
      orderAdapter.Fill(ds, "Orders");
      //創(chuàng)建兩個(gè)表之間的關(guān)系
      DataRelation custOrderRel = ds.Relations.Add("CustOrders", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
      foreach (DataRow custRow in ds.Tables["Customers"].Rows)
      {
        Console.WriteLine("Customer ID: " + custRow["CustomerID"] + "\tName: " + custRow["CompanyName"]);
        foreach (DataRow orderRow in custRow.GetChildRows(custOrderRel))
        {
          Console.WriteLine(" Order ID: "+orderRow["OrderID"]);
        }
      }
      conn.Close();
 
      Console.ReadKey();
 
    }

利用兩個(gè)表之間的關(guān)系訪問表中的數(shù)據(jù)的時(shí)候,我們還可以使用Linq over DataSet 。這需要導(dǎo)入System.Data.Linq命名空間。我們可以使用如下代碼代替上述代碼中的foreach部分:

      var preferredCustomers = from c in Customers
                   where c.GetChildRows("CustOrders").Length > 10
                   orderby c.GetChildRows("CustOrders").Length
                   select c;
      Console.WriteLine("Customers with > 10 orders:");
      foreach (var customer in preferredCustomers)
      {
        Console.WriteLine("{0} orders: {1} {2}, {3} {4}",customer.GetChildRows("CustOrders").Length,
          customer["CustomerID"],customer["CompanyName"],customer["City"],customer["Region"]);
      }

表之間的關(guān)系除了兩個(gè)表之間的關(guān)系,還有更復(fù)雜的多表連接。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • C#實(shí)現(xiàn)移動(dòng)窗體的兩種共方法

    C#實(shí)現(xiàn)移動(dòng)窗體的兩種共方法

    在C#Form窗體設(shè)計(jì)中,如果我們不需要使用默認(rèn)邊框設(shè)計(jì)自己個(gè)性化的窗體,這時(shí)候你會(huì)發(fā)現(xiàn)拖動(dòng)窗體的功能就沒有了,這里需要自己構(gòu)建方法讓用戶可以拖動(dòng)整個(gè)窗體,下面就介紹兩種方法來實(shí)現(xiàn),需要的朋友可以參考下
    2024-09-09
  • C#中把DataTable、Dataset轉(zhuǎn)Json數(shù)據(jù)

    C#中把DataTable、Dataset轉(zhuǎn)Json數(shù)據(jù)

    這篇文章介紹了C#中把DataTable、Dataset轉(zhuǎn)Json數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#的編碼規(guī)范詳細(xì)說明

    C#的編碼規(guī)范詳細(xì)說明

    編碼規(guī)范是老生常談的問題,現(xiàn)在再看代碼規(guī)范可能不會(huì)再去在意變量,控件的命名方法等,而是更加關(guān)注代碼的實(shí)用性
    2013-08-08
  • C#制作簡(jiǎn)易的屏保

    C#制作簡(jiǎn)易的屏保

    這篇文章主要為大家詳細(xì)介紹了C#制作簡(jiǎn)易的屏保的相關(guān)資料,C#如何制作屏保的過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • unity3D實(shí)現(xiàn)攝像機(jī)抖動(dòng)特效

    unity3D實(shí)現(xiàn)攝像機(jī)抖動(dòng)特效

    這篇文章主要為大家詳細(xì)介紹了unity3D實(shí)現(xiàn)攝像機(jī)抖動(dòng)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • C#如何實(shí)現(xiàn)調(diào)取釘釘考勤接口的功能

    C#如何實(shí)現(xiàn)調(diào)取釘釘考勤接口的功能

    這篇文章主要介紹了C#如何實(shí)現(xiàn)調(diào)取釘釘考勤接口的功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • C#使用System.Net.Mail類實(shí)現(xiàn)郵件發(fā)送

    C#使用System.Net.Mail類實(shí)現(xiàn)郵件發(fā)送

    這篇文章介紹了C#使用System.Net.Mail類實(shí)現(xiàn)郵件發(fā)送的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C#實(shí)現(xiàn)撲克游戲(21點(diǎn))的示例代碼

    C#實(shí)現(xiàn)撲克游戲(21點(diǎn))的示例代碼

    21點(diǎn)又名黑杰克,該游戲由2到6個(gè)人玩,使用除大小王之外的52張牌,游戲者的目標(biāo)是使手中的牌的點(diǎn)數(shù)之和不超過21點(diǎn)且盡量大。本文將用C#實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下
    2022-08-08
  • C#實(shí)現(xiàn)拆分合并Word表格中的單元格

    C#實(shí)現(xiàn)拆分合并Word表格中的單元格

    我們?cè)谑褂肳ord制作表格時(shí),由于表格較為復(fù)雜,只是簡(jiǎn)單的插入行、列并不能滿足我們的需要。要做一個(gè)完整的表格,很多時(shí)候需要將單元格進(jìn)行拆分或者合并。本文將詳細(xì)為您介紹在Word表格中拆分或合并單元格的思路及方法,希望對(duì)大家有所幫助
    2022-12-12
  • C#簡(jiǎn)單讀寫txt文件的方法

    C#簡(jiǎn)單讀寫txt文件的方法

    這篇文章主要介紹了C#簡(jiǎn)單讀寫txt文件的方法,涉及C#針對(duì)文件的基本打開、寫入、保存與讀取等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06

最新評(píng)論