现在的位置: 首页 > 综合 > 正文

DataRelation的用法(2),多表查询

2013年07月20日 ⁄ 综合 ⁄ 共 2330字 ⁄ 字号 评论关闭

class Program
    {
        static void Main(string[] args)
        {
            SqlConnection thisConnection = new SqlConnection(
                 @"Data Source=.\SQLEXPRESS;" +
                 @"AttachDbFilename='C:\SQL Server 2000 Sample Databases\NORTHWND.MDF';"
                 +
                 @"Integrated Security=true;Connect Timeout=30;User Instance=true");

            DataSet thisDataSet = new DataSet();
            //为每一张表创建一个DataAdapter对象,然后填充DataSet
            SqlDataAdapter custAdapter = new SqlDataAdapter(
                "select * from Customers", thisConnection);
            custAdapter.Fill(thisDataSet, "Customers");

            SqlDataAdapter orderAdapter = new SqlDataAdapter(
                "select * from Orders", thisConnection);
            orderAdapter.Fill(thisDataSet, "Orders");

            SqlDataAdapter detailAdapter = new SqlDataAdapter(
                "select * from [Order Details]", thisConnection);
            detailAdapter.Fill(thisDataSet, "Order Details");

            SqlDataAdapter prodAdapter = new SqlDataAdapter(
                "select * from Products", thisConnection);
            prodAdapter.Fill(thisDataSet, "Products");
            
            
            //创建DataRelation对象并将其连接到DataSet上。注:Customers是主表,Orders是子表
            DataRelation custOrderRel = thisDataSet.Relations.Add("CustOrders",
                thisDataSet.Tables["Customers"].Columns["CustomerID"],
                thisDataSet.Tables["Orders"].Columns["CustomerID"]);

            DataRelation orderDetailRel = thisDataSet.Relations.Add("OrderDetail",
                thisDataSet.Tables["Orders"].Columns["OrderID"],
                thisDataSet.Tables["Order Details"].Columns["OrderID"]);

            DataRelation orderProductRel = thisDataSet.Relations.Add("OrderProducts",
                thisDataSet.Tables["Products"].Columns["ProductID"],
                thisDataSet.Tables["Order Details"].Columns["ProductID"]);

            foreach (DataRow custRow in thisDataSet.Tables["Customers"].Rows)
            {
                Console.WriteLine("Customer ID:" + custRow["CustomerID"]);
                foreach (DataRow orderRow in custRow.GetChildRows(custOrderRel))
                {
                    Console.WriteLine("\tOrder ID:" + orderRow["OrderID"]);
                    Console.WriteLine("\t\tOrder Date:" + orderRow["OrderDate"]);
                    foreach (DataRow datailRow in orderRow.GetChildRows(orderDetailRel))
                    {
                        Console.WriteLine("\t\tProduct:" +
                            datailRow.GetParentRow(orderProductRel)["ProductName"]);
                        Console.WriteLine("\t\tQuantity:" + datailRow["Quantity"]);
                    }
                }
            }
            thisConnection.Close();
            Console.WriteLine();

        }
    }

抱歉!评论已关闭.