中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在C#中將多張表存放到dataset中

發布時間:2021-01-19 14:34:00 來源:億速云 閱讀:463 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在C#中將多張表存放到dataset中,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

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

補充:在DataSet中訪問多個表

ADO.Net模型有一個很大的優點,就是DataSet對象可以跟蹤多個表和它們之間的關系。這表示可以在一個操作的不同程序段之間傳遞完整的相關數據集,體系結構內在地維護數據之間關系的完整性。

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

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

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

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();
      //創建用于保存修改的數據的適配器
      SqlDataAdapter adapter = new SqlDataAdapter("select CustomerID,CompanyName from Customers", conn);
      SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
      //創建數據集
      DataSet ds = new DataSet();
      //創建讀取Customers表的適配器
      SqlDataAdapter custAdapter = new SqlDataAdapter("select * from Customers", conn);
      //創建讀取Orders表的適配器
      SqlDataAdapter orderAdapter = new SqlDataAdapter("select * from Orders", conn);
      //填充兩個表的數據并放到DataSet中
      custAdapter.Fill(ds, "Customers");
      orderAdapter.Fill(ds, "Orders");
      //創建兩個表之間的關系
      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();
 
    }

利用兩個表之間的關系訪問表中的數據的時候,我們還可以使用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"]);
      }

關于怎么在C#中將多張表存放到dataset中就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆云县| 观塘区| 开封县| 靖州| 遂平县| 新和县| 喀喇| 天等县| 南召县| 乌拉特中旗| 东至县| 房产| 吉隆县| 温州市| 汉中市| 桃江县| 张掖市| 海宁市| 仁寿县| 辽阳市| 胶州市| 斗六市| 普陀区| 安徽省| 涪陵区| 精河县| 新平| 霞浦县| 芦溪县| 阳曲县| 山西省| 白沙| 河源市| 绥芬河市| 饶河县| 高台县| 武宣县| 无锡市| 开远市| 团风县| 富蕴县|