使用DataAdapter填充多个表(利用DataRelation)的实例代码

使用DataAdapter填充多个表(利用DataRelation)的实例代码

  Default.aspx

  

复制代码 代码如下:

  View Code

  <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head runat="server">

  <title>无标题页</title>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  </div>

  <asp:Label ID="lbText" runat="server"></asp:Label>

  </form>

  </body>

  </html>

  Default.aspx.cs

  

复制代码 代码如下:

  using System;

  using System.Configuration;

  using System.Data;

  using System.Linq;

  using System.Web;

  using System.Web.Security;

  using System.Web.UI;

  using System.Web.UI.HtmlControls;

  using System.Web.UI.WebControls;

  using System.Web.UI.WebControls.WebParts;

  using System.Xml.Linq;

  using System.Data.SqlClient;

  using System.Text;

  public partial class _Default : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  string connectionString = ConfigurationSettings.AppSettings["strCon"];

  SqlConnection mycon = new SqlConnection(connectionString);//创建数据库连接

  string sqlCategory = "select ID,C_Name from Photo_Category";//查询相册分类表中信息

  string sqlPhoto = "select CategoryID,Title from Photo";//查询相册表中信息

  SqlDataAdapter da = new SqlDataAdapter(sqlCategory, mycon);//创建数据适配器

  DataSet ds = new DataSet();//创建数据集

  try

  {

  if (mycon.State.Equals(ConnectionState.Closed))

  { mycon.Open(); }//显式地打开数据库连接

  da.Fill(ds, "Photo_Category");//填充相册分类表

  da.SelectCommand.CommandText = sqlPhoto;

  da.Fill(ds, "Photo");//填充相册信息表

  }

  finally

  {

  mycon.Close();//显式地关闭数据库连接

  }

  //创建DataRelation对象,关联表间关系

  DataRelation relat = new DataRelation("Photo_Category",  ds.Tables["Photo_Category"].Columns["ID"],ds.Tables["Photo"].Columns["CategoryID"]);

  ds.Relations.Add(relat);//添加表间关系

  StringBuilder builder = new StringBuilder("");

  foreach (DataRow row in ds.Tables["Photo_Category"].Rows)

  {

  builder.Append("<b>");

  builder.Append(row["C_Name"].ToString());

  builder.Append("</b><ul>");

  DataRow[] childRows = row.GetChildRows(relat);

  foreach (DataRow childRow in childRows)

  {

  builder.Append("<li>");

  builder.Append(childRow["Title"].ToString());

  builder.Append("</li>");

  }

  builder.Append("</ul>");

  }

  lbText.Text += builder.ToString();//将运行结果输出到页面中

  }

  }