DataSet 多表关系

protected void Page_Load(object sender, EventArgs e)
{
    string connectionString = @"Data Source=.;Initial Catalog=Pubs;Integrated Security=SSPI";
    string selectSQL = "SELECT au_lname, au_fname, au_id FROM Authors";
    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(selectSQL, con);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet dsPubs = new DataSet();
    try
    {
        con.Open();
        adapter.Fill(dsPubs, "Authors");
        cmd.CommandText = "SELECT au_id, title_id FROM TitleAuthor";
        adapter.Fill(dsPubs, "TitleAuthor");
        cmd.CommandText = "SELECT title_id, title FROM Titles"; adapter.Fill(dsPubs, "Titles");
        //多对多关系 
        DataRelation Titles_TitleAuthor = new DataRelation("Titles_TitleAuthor", dsPubs.Tables["Titles"].Columns["title_id"], dsPubs.Tables["TitleAuthor"].Columns["title_id"]);
        DataRelation Authors_TitleAuthor = new DataRelation("Authors_TitleAuthor", dsPubs.Tables["Authors"].Columns["au_id"], dsPubs.Tables["TitleAuthor"].Columns["au_id"]);
        dsPubs.Relations.Add(Titles_TitleAuthor); dsPubs.Relations.Add(Authors_TitleAuthor);
        foreach (DataRow rowAuthor in dsPubs.Tables["Authors"].Rows)
        {
            lblList.Text += " " + rowAuthor["au_fname"]; lblList.Text += " " + rowAuthor["au_lname"] + " ";
            foreach (DataRow rowTitleAuthor in rowAuthor.GetChildRows(Authors_TitleAuthor))
            {
                DataRow rowTitle = rowTitleAuthor.GetParentRows(Titles_TitleAuthor)[0];
                lblList.Text += "  ";
                lblList.Text += rowTitle["title"] + " ";
            }
        }
    }
    catch (Exception err)
    {
        lblList.Text = "Error reading list of names. ";
        lblList.Text = err.Message;
    }
    finally
    {
        con.Close();
    }
}

 

转载于:https://www.cnblogs.com/wanghaibin/p/3872087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值