迭代DataSet表

时间:2017-02-10 13:54:57

标签: c# datatable dataset

我正在运行一个运行两个select语句的paramterized SQL存储过程。我想为返回的结果分配DataSet()以便于处理。但是,在我的语法中,我收到错误

  

无法隐式转换类型System.Data.DataTable'到' System.Data.DataSet'

有人能告诉我如何做我在这之后的事吗? - 而不是将其称为ds.Tables[0];我想关联一个有意义的名称。

public DataSet RunOneStoredProc()
{
    DataSet dataset = new DataSet();
    using (var conn = new SqlConnection(SQLCon))
    {
        var cmd = new SqlCommand("GetTeachersStudents", conn);
        cmd.Parameters.Add("@yearstart", SqlDbType.Date, 100);
        cmd.Parameters.Add("@yearend", SqlDbType.Date, 100);
        cmd.Parameters["@yearstart"].Value = dtpStartDate.Value.ToString("MM/dd/yyyy");
        cmd.Parameters["@yearend"].Value = dtpEndDate.Value.ToString("MM/dd/yyyy");
        cmd.CommandType = CommandType.StoredProcedure;
        var ds = new DataSet();
        using (var da = new SqlDataAdapter(cmd))
            da.Fill(ds);
        return dataset;
    }
}

private void btnPush_Click(object sender, EventArgs e)
{
    DataSet ds = new DataSet();
    DataSet teachers = new DataSet();
    DataSet students = new DataSet();
    ds = RunOneStoredProc();
    teachers = ds.Tables[0];
    students = ds.Tables[1];

}   

1 个答案:

答案 0 :(得分:1)

试试这个。您还要创建DataSet ds的新实例。因为RunOneStoredProc()返回一个新实例,所以没有必要。

private void btnPush_Click(object sender, EventArgs e)
    {
        DataSet ds = RunOneStoredProc();
        DataTable teachers = ds.Tables[0];
        DataTable students = ds.Tables[1];

    }