【问题标题】:Using returned Values from a DataSet使用数据集中的返回值
【发布时间】:2012-07-21 03:45:45
【问题描述】:

我有一个返回 DataSet 的方法。

  protected DataSet GetProgramList()
    {
        DataSet ds1 = new DataSet();
        using (SqlConnection cn = new SqlConnection("server=Daffodils-PC\\sqlexpress;Database=Assignment1;Trusted_Connection=Yes;"))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT * FROM Program", cn))
                da.Fill(ds1, "Program");
        }
        return ds1;
    }

我想在下面的其他方法中使用 DataSet 中的特定列:

protected DataSet GetStudentByProgramID(int programID)
{
    DataSet ds2 = new DataSet();
    using (SqlConnection cn = new SqlConnection("server=Daffodils-PC\\sqlexpress;Database=Assignment1;Trusted_Connection=Yes;"))
    {
        using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT LastName, FirstName FROM Student JOIN Program on Program.ProgramID = Student.ProgramID WHERE ProgramID ="+programID, cn))
            da.Fill(ds2, "Student");
    }
    return ds2;
}

例如,我想在 first 方法中使用 Program 表中的 ProgramID 列。我知道我必须将返回的数据集存储在一个变量中,但是如何

【问题讨论】:

  • 我应该在下面给出答案之前问一下为什么你需要 GetStudentByProgramID 中的 ProgamId 列
  • 我会根据学生的 ProgramID 检索学生。
  • 但是你已经在这个 GetStudentByProgramID(int programID) 中只传递了一个 ProgramID
  • 是的,我知道。但这是一个要求。

标签: c# asp.net sql-server dataset


【解决方案1】:

鉴于您可以通过GetStudentByProgramID 方法访问ds1

那你就可以这样用了

rotected DataSet GetStudentByProgramID(int programID)
{

 DataColumn programId = ds1.Tables[0].Columns["ProgramId"];
//to read row you can iterate from ds1.Table[0].Rows

DataSet ds2 = new DataSet();
using (SqlConnection cn = new SqlConnection("server=Daffodils-PC\\sqlexpress;Database=Assignment1;Trusted_Connection=Yes;"))
{
using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT LastName, FirstName FROM Student WHERE ProgramID ="+programID, cn))
da.Fill(ds2, "Student");
}
return ds2;
}

【讨论】:

  • 在了解您的要求后,发布的答案将允许您使用 ProgamId 行
  • System.Data.DataSet 不包含表的定义。 ://
  • 对不起,它应该用大写 'T' 和 Tables 表,现在在回答中更正它
【解决方案2】:

你为什么不写一个查询?

SELECT programID, LastName, FirstName 
FROM Program JOIN Student ON Program.Id=Student.ProgramId

这样,您将为每个学生提供他们的 programID。

【讨论】:

  • 坦率地说,需要为一个作业编写两个方法。这就是我这样做的原因。
  • "SELECT LastName, FirstName FROM Student WHERE ProgramID ="+programID.. 你想要特定 programID的结果吗?
猜你喜欢
  • 2020-12-23
  • 2012-02-07
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多