Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使数据集返回两个相关的表?_C#_.net_Sql Server 2008_Ado.net - Fatal编程技术网

C# 如何使数据集返回两个相关的表?

C# 如何使数据集返回两个相关的表?,c#,.net,sql-server-2008,ado.net,C#,.net,Sql Server 2008,Ado.net,我使用的是C++.NET3.5+VSTS2008+ADO.Net+SQLServer2008。我在SQLServer中有两个相关的表(外键关系)。我想将这两个表作为数据集中的两个数据表加载。有没有参考代码可以这样做 提前感谢,, 乔治试试这个 Dim myAdapter as SqlDataAdapter = new SqlDataAdapter( “SELECT * FROM Customers; SELECT * FROM Orders“, connection) myAdap

我使用的是C++.NET3.5+VSTS2008+ADO.Net+SQLServer2008。我在SQLServer中有两个相关的表(外键关系)。我想将这两个表作为数据集中的两个数据表加载。有没有参考代码可以这样做

提前感谢,, 乔治

试试这个

Dim myAdapter as SqlDataAdapter = new SqlDataAdapter(
      “SELECT * FROM Customers; SELECT * FROM Orders“, connection)

myAdapter.Fill(dsTables)
dsTables.Tables(0).TableName = “Customers“)
dsTables.Tables(1).TableName = “Orders“)
试试这个

Dim myAdapter as SqlDataAdapter = new SqlDataAdapter(
      “SELECT * FROM Customers; SELECT * FROM Orders“, connection)

myAdapter.Fill(dsTables)
dsTables.Tables(0).TableName = “Customers“)
dsTables.Tables(1).TableName = “Orders“)
乔治

您能澄清一下您的问题吗?是关于填写数据集中的多个表,还是只填写特定的实数表

关于加载多个表,您可以参考以下代码(此代码可在MSDN上查看):

static void Main()
{
数据集=新数据集();
DataTable customerTable=新DataTable();
DataTable productTable=新DataTable();
//此信息仅为表面信息。
customerTable.TableName=“客户”;
productTable.TableName=“产品”;
//将表添加到数据集:
dataSet.Tables.Add(customerTable);
dataSet.Tables.Add(productTable);
//将数据加载到现有数据集中。
DataTableReader=GetReader();
dataSet.Load(读卡器,LoadOption.OverwriteChanges,
客户表、产品表);
//打印出每个表格的内容:
foreach(dataSet.Tables中的DataTable表)
{
打印列(表);
}
Console.WriteLine(“按任意键继续”);
Console.ReadKey();
}
私有静态数据表GetCustomers()
{
//创建示例客户表。
DataTable=新的DataTable();
table.TableName=“客户”;
//创建两列,ID和Name。
DataColumn-idColumn=table.Columns.Add(“ID”,typeof(int));
表.列.添加(“名称”,类型(字符串));
//将ID列设置为主键列。
table.PrimaryKey=newdatacolumn[]{idColumn};
Add(新对象[]{0,“Mary”});
Add(新对象[]{1,“Andy”});
table.Rows.Add(新对象[]{2,“Peter”});
表.AcceptChanges();
返回表;
}
私有静态数据表GetProducts()
{
//创建示例产品表。
DataTable=新的DataTable();
table.TableName=“产品”;
//创建两列,ID和Name。
DataColumn idColumn=table.Columns.Add(“ID”,
类型(int));
表.列.添加(“名称”,类型(字符串));
//将ID列设置为主键列。
table.PrimaryKey=newdatacolumn[]{idColumn};
table.Rows.Add(新对象[]{0,“无线网卡”});
添加(新对象[]{1,“硬盘”});
添加(新对象[]{2,“监视器”});
Add(新对象[]{3,“CPU”});
表.AcceptChanges();
返回表;
}
私有静态void打印列(数据表)
{
Console.WriteLine();
Console.WriteLine(table.TableName);
Console.WriteLine(“===========================================”);
//循环浏览表中的所有行:
foreach(table.Rows中的DataRow行)
{
for(int i=0;i
下面是用于管理数据集中的父子关系的代码

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration

Public Class DataRelation
  Inherits System.Web.UI.Page

  Protected lblDisplay As System.Web.UI.WebControls.Label

  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim objConn As SqlConnection
    Dim da As SqlDataAdapter
    Dim ds As DataSet
    Dim dtrParent As DataRow
    Dim dtrChild As DataRow

    objConn = New SqlConnection(ConfigurationSettings.Appsettings("NorthwindConnection"))
    da = New SqlDataAdapter("SELECT * FROM Categories", objConn)
    ds = New DataSet()
    Try
      objConn.Open()
      da.Fill( ds,"Categories")
      da.SelectCommand = New SqlCommand("SELECT * FROM Products", objConn)
      da.Fill(ds, "Products")
    Catch exc As SqlException
      Response.Write(exc.ToString())
    Finally
      objConn.Dispose()
    End Try 
    'Create the Data Relationship
    ds.Relations.Add("Cat_Prod",ds.Tables("Categories").Columns("CategoryID"), _
                            ds.Tables("Products").Columns("CategoryID"))

    'Display the Category and Child Products Within
    For each dtrParent in ds.Tables("Categories").Rows
      lblDisplay.Text &= "<h3>" & dtrParent("CategoryName") & "</h3><ul>"
      For each dtrChild in dtrParent.GetChildRows("Cat_Prod")
        lblDisplay.Text &= "<li>" & dtrChild("ProductName") & "</li>"
      Next
      lblDisplay.Text &= "</ul>"
    Next
  End Sub

End Class 
导入系统数据
导入System.Data.SqlClient
导入系统配置
公共类数据关系
继承System.Web.UI.Page
受保护的LBL显示为System.Web.UI.WebControl.Label
私有子页_Load(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
Dim objConn作为SqlConnection
Dim da作为SqlDataAdapter
Dim ds作为数据集
Dim DTR不作为数据行
将dtrChild设置为数据行
objConn=newsqlconnection(ConfigurationSettings.Appsettings(“NorthwindConnection”))
da=新的SqlDataAdapter(“从类别中选择*”,objConn)
ds=新数据集()
尝试
objConn.Open()
da.填充(ds,“类别”)
da.SelectCommand=New-SqlCommand(“从产品中选择*”,objConn)
da.填充(ds,“产品”)
捕获exc作为SqlException
Response.Write(exc.ToString())
最后
objConn.Dispose()
结束尝试
'创建数据关系
ds.Relations.Add(“目录产品”,ds.Tables(“类别”).列(“类别ID”)_
ds.表格(“产品”).列(“类别ID”))
'在中显示类别和子产品
对于ds.Tables(“Categories”)行中的每个dtrParent
lblDisplay.Text&=“dtrParent”(“CategoryName”)和“
    ” 对于dtrParent.GetChildRows(“Cat_Prod”)中的每个dtrChild lblDisplay.Text&=“
  • ”&dtrChild(“产品名称”)和“
  • ” 下一个 lblDisplay.Text&=“
” 下一个 端接头 末级
你可以在George上找到进一步的解释

您能澄清一下您的问题吗?是关于填写数据集中的多个表,还是只填写特定的实数表

关于加载多个表,您可以参考以下代码(此代码可在MSDN上查看):

static void Main()
{
数据集=新数据集();
DataTable customerTable=新DataTable();
DataTable productTable=新DataTable();
//此信息仅为表面信息。
customerTable.TableName=“客户”;
productTable.TableName=“产品”;
//将表添加到数据集:
dataSet.Tables.Add(customerTable);
dataSet.Tables.Add(productTable);
//将数据加载到现有数据集中。
DataTableReader=GetReader();
dataSet.Load(读卡器,LoadOption.OverwriteChanges,
客户表、产品表);
//打印出每个表格的内容:
foreach(dataSet.Tables中的DataTable表)
{
PrintCol
            var query = dc.GetTable<Media>().Where(s => s.MediaID == new Guid("A72AA79A-6C40-4D6B-A826-241553FECDFE"));
            var query1 = dc.GetTable<MediaVersion>().Where(s => s.MediaID == new Guid("A72AA79A-6C40-4D6B-A826-241553FECDFE"));
            var query2 = dc.GetTable<RootPath>().Where(s => s.RootPathID == new Guid("62145B2C-BA36-4313-8CA2-0F224F8FE7E8"));


            SqlCommand cmd = dc.GetCommand(query) as SqlCommand;
            //Load first
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            ada.Fill(ds, "Media");
            //Load second
            cmd = dc.GetCommand(query1) as SqlCommand;
            ada.SelectCommand = cmd;
            ada.Fill(ds, "MediaVersion");
            ds.Relations.Add("Med_MedVer", ds.Tables["Media"].Columns["MediaID"],
                       ds.Tables["MediaVersion"].Columns["MediaID"]);

            //Load third independent table
            cmd = dc.GetCommand(query2) as SqlCommand;
            ada.SelectCommand = cmd;
            ada.Fill(ds, "RootPath");