zoukankan      html  css  js  c++  java
  • [Linq] Linq Over DataSet[Ado.net]

    Technorati 标签: ADO.NET,LINQ

    ADO.NET

    1. DataSet 联合 DataAdapter 更新数据库表的值 (Dataset每列行都有状态标志)、

    1)更改数据库的值。

          1.首先更改DataSet.Tables[“Name”].Rows[“xx”]的值(此时只是更改了内存的值,数据库未生效。)

          2.然后用DataAdapter.updata方法更新到数据库。

    2)删除DataSet某列

         步骤: 1.dataset找到该行  find()方法

                   2.删除,并update更新

    3)添加一行

        步骤:  1. 查找是否存在,如果有就不能插入了

           2.不存在,就新建datarow,然后DataSet.Rows.Add 添加

           3.DataAdapter.update  方法更新到数据库

    2.DataRelation对象

    DataRelation 的一项主要功能就是在 DataSet 中从一个 DataTable 浏览到另一个。 它使您能够在给定相关 DataTable 中的单个 DataRow 的情况下检索一个 DataTable 中的所有相关 DataRow 对象。 例如,当建立客户表和订单表之间的 DataRelation 后,可以使用 GetChildRows 检索特定客户行的所有订单行。

    [补充:da.fill   多个数据集  默认名称table0,table1]

    使用步骤: 1. 填充到DataSet  2个表。  Customer  和 Orders   靠CustomerId关联

                    2. 声明 DataRelation cusRel = ds.Relations.Add("CustOrders",ds.Tables[0].Columns["CustomerId"],ds.Tables[1].Columns["CustomerId"]); //此处参数不要换行写

    此处第2个参数 为父表的Id

                   3.然后Foreach 用 GetChildRows 检索特定客户行的所有订单行

    static private string GetConnectionString()
           {
               // To avoid storing the connection string in your code, 
               // you can retrieve it from a configuration file, using the 
               // System.Configuration.ConfigurationSettings.AppSettings property 
               return "Data Source=(local);Initial Catalog=Northwind;"
                   + "Integrated Security=SSPI;";
           }
     
           static void Main(string[] args)
           {
     
     
               // DataRelation
               try
               {
                   using (SqlConnection con = new SqlConnection(GetConnectionString()))
                   {
     
                       SqlCommand cmd = new SqlCommand("select top 100 * from customers;select * from orders", con);
                       SqlDataAdapter da = new SqlDataAdapter(cmd);
                       DataSet ds = new DataSet();
                       da.Fill(ds);
     
     
     
                       DataRelation cusRel = ds.Relations.Add("CustOrders",ds.Tables[0].Columns["CustomerId"],ds.Tables[1].Columns["CustomerId"]); //此处参数不要换行写
                       foreach (DataRow dr in ds.Tables[0].Rows)
                       {
                           Write("--------------------------"+dr["CustomerID"].ToString()+"--------------------------");
     
                           foreach (DataRow re in dr.GetChildRows(cusRel))
                           {
                               Write(re["OrderId"].ToString());
     
                           }
     
                       }
     
                       //此时开始Linq OVER dataset 直接使用
                       var customers = ds.Tables[0].AsEnumerable();
                       var Customerresult = from a in customers
                                    select a["CustomerId"];
                       foreach (var d in Customerresult)
                       {
                           Write(d);
                       }
     
                       //Write(ds.Tables[0].Rows.Count.ToString());
                   }
               }
     
               catch (Exception exe)
               {
                   Write(exe.Message);
               }

    3.ADO.NET调用存储过程

       1)设置commandText 存储过程名字

       2)设置参数

       3) 执行

    Linq Over DataSet

    实现 IEnumerable<(Of <(T>)>) 泛型接口的数据源可以通过 LINQ 进行查询。 对 DataTable 调用 AsEnumerable 将返回实现泛型 IEnumerable<(Of <(T>)>) 接口的对象,作为 LINQ to DataSet 查询的数据源。

    关键:var customers = ds.Tables[0].AsEnumerable();

    //此时开始Linq OVER dataset 直接使用
                       var customers = ds.Tables[0].AsEnumerable();
                       var Customerresult = from a in customers
                                    select a["CustomerId"];
                       foreach (var d in Customerresult)
                       {
                           Write(d);
                       }
  • 相关阅读:
    C++11 并发指南三(Lock 详解)
    C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
    C++11 并发指南六(atomic 类型详解三 std::atomic (续))
    C++11 并发指南六( <atomic> 类型详解二 std::atomic )
    C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)
    C++11 并发指南五(std::condition_variable 详解)
    腾讯地图定位及坐标解析
    控制器里把文件转为二进制输出下载
    C#操作mongodb简记
    MYSQL备份还原问题
  • 原文地址:https://www.cnblogs.com/StudyLife/p/2581991.html
Copyright © 2011-2022 走看看