最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# dataset存放多張表的實例

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

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

cmd.CommandText = "select * from table1;";
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd); //實例化一個類,它用于連接C#與數(shù)據(jù)庫,并執(zhí)行cmd語句且將結(jié)果緩存到適配器中
DataSet thedataset = new DataSet(); //實例化一個dataset,實例名為thedataset(通常被定義為ds)
da.Fill(thedataset, "thetable1"); //將適配器中的內(nèi)容填充到dataset的thetable1表中, thetable1同時被建立
cmd.Parameters.Clear(); //清空cmd內(nèi)容,如果不清空下次使用時會拋出異常
cmd.CommandText = "select * from table2;";
da = new NpgsqlDataAdapter(cmd);
da.Fill(thedataset, "thetable2"); //將適配器中的內(nèi)容填充到dataset的thetable2表中, thetable2同時被建立
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列的值

補充:在DataSet中訪問多個表

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

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

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

為了使用有關(guān)系,需要從一張表的行進入另一張表的關(guān)聯(lián)行,這就是對關(guān)系導航。通常導航是指從一張表的父行進入另一張表的子行。那么假如給定父表中的一行,如何獲取子表中與其對應的所有行呢?我們可以使用DataRow對象的GetChildRows()方法提取這些行。示例:一個顧客(Customers)表包含有一個或多個訂單(Orders)表,建立這兩個表之間的數(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);
      //填充兩個表的數(shù)據(jù)并放到DataSet中
      custAdapter.Fill(ds, "Customers");
      orderAdapter.Fill(ds, "Orders");
      //創(chuàng)建兩個表之間的關(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();
 
    }

利用兩個表之間的關(guān)系訪問表中的數(shù)據(jù)的時候,我們還可以使用Linq over DataSet 。這需要導入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)系除了兩個表之間的關(guān)系,還有更復雜的多表連接。

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

相關(guān)文章

  • Unity實現(xiàn)游戲卡牌滾動效果

    Unity實現(xiàn)游戲卡牌滾動效果

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)游戲卡牌滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C# 數(shù)據(jù)庫鏈接字符串加密解密工具代碼詳解

    C# 數(shù)據(jù)庫鏈接字符串加密解密工具代碼詳解

    本文通過代碼給大家介紹C# 數(shù)據(jù)庫鏈接字符串加密解密工具的相關(guān)知識,實現(xiàn)思路大概是使用兩個數(shù)對連接字符串進行加密,再用這兩個數(shù)進行解密,具體詳細代碼,大家參考下本文
    2018-05-05
  • C#實現(xiàn)子類與父類的相互轉(zhuǎn)換

    C#實現(xiàn)子類與父類的相互轉(zhuǎn)換

    這篇文章主要介紹了C#實現(xiàn)子類與父類的相互轉(zhuǎn)換,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Unity UGUI的RectMask2D遮罩組件的介紹使用

    Unity UGUI的RectMask2D遮罩組件的介紹使用

    這篇文章主要為大家介紹了Unity UGUI的RectMask2D遮罩組件的介紹使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • C#實現(xiàn)隨機數(shù)產(chǎn)生類實例

    C#實現(xiàn)隨機數(shù)產(chǎn)生類實例

    這篇文章主要介紹了C#實現(xiàn)隨機數(shù)產(chǎn)生類,實例分析了C#隨機數(shù)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • C#?VB.NET?將Html轉(zhuǎn)為Excel

    C#?VB.NET?將Html轉(zhuǎn)為Excel

    本文介紹通過C#和VB.NET代碼展示將Html轉(zhuǎn)為Excel文檔的方法。文中的示例代碼講解詳細,對我們學習C#有一定幫助,感興趣的小伙伴可以了解一下
    2022-03-03
  • C#繪制中國象棋棋盤

    C#繪制中國象棋棋盤

    這篇文章主要為大家詳細介紹了C#繪制中國象棋棋盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C#中簡單的裝箱操作實例分析

    C#中簡單的裝箱操作實例分析

    這篇文章主要介紹了C#中簡單的裝箱操作,實例分析了C#中裝箱操作的概念、用法與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C#實現(xiàn)HTML轉(zhuǎn)WORD及WORD轉(zhuǎn)PDF的方法

    C#實現(xiàn)HTML轉(zhuǎn)WORD及WORD轉(zhuǎn)PDF的方法

    這篇文章主要介紹了C#實現(xiàn)HTML轉(zhuǎn)WORD及WORD轉(zhuǎn)PDF的方法,涉及C#實現(xiàn)HTML、WORD及PDF等文件格式轉(zhuǎn)換的相關(guān)技巧,需要的朋友可以參考下
    2015-09-09
  • 共享鎖using范圍的實現(xiàn)方法

    共享鎖using范圍的實現(xiàn)方法

    共享鎖using范圍的實現(xiàn)方法,需要的朋友可以參考一下
    2013-04-04

最新評論

白城市| 莫力| 枣阳市| 赤水市| 五台县| 安新县| 天柱县| 伊通| 米易县| 多伦县| 揭西县| 常熟市| 观塘区| 涿鹿县| 汉阴县| 德阳市| 兴仁县| 增城市| 淮北市| 金川县| 汽车| 大同县| 涞水县| 武乡县| 恩平市| 霍林郭勒市| 武强县| 乐业县| 武定县| 贡嘎县| 中阳县| 泰安市| 祁东县| 左云县| 卢湾区| 确山县| 鲜城| 奈曼旗| 西乌珠穆沁旗| 呼玛县| 九龙坡区|