访问从我的DAL返回的DataSet

时间:2018-04-11 23:08:40

标签: c# asp.net dataset

我正在尝试使用ASP.Net并生成数据库访问层以实现可重用性。我使用下面的方法将存储过程名称传递给我的DAL并执行存储过程,然后将结果作为数据集返回。

但是,在调用类中,我收到错误

  

当前上下文中不存在名称ds

我应该改变什么才能访问我的调用类中的返回数据集?

class DatabaseAccessLayer
{
    public DataSet RunSQLServerStoredProcedure(string uspName)
    {
        using (SqlConnection con = new SqlConnection(essToUse))
        {
            SqlCommand sqlComm = new SqlCommand(uspName, con);
            sqlComm.CommandType = CommandType.StoredProcedure;

            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = sqlComm;

            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds;
        }
    }
}

class Gopher
{
    DatabaseAccessLayer dal;

    public void PopulateHootersStores()
    {
        DataRow dr;
        dal.RunSQLServerStoredProcedure("ReturnStoredProc");

        DataTable dt = ds.Tables[0];

        dr = dt.NewRow();
        dr.ItemArray = new object[] { 0, "--Select A Store--" };
        dt.Rows.InsertAt(dr, 0);

        //Adding in All option
        dr = dt.NewRow();
        dr.ItemArray = new object[] { 1, "All" };
        dt.Rows.InsertAt(dr, 1);

        cboTest.ValueMember = "StoreNumber";

        cboTest.DisplayMember = "StoreName";
        cboTest.DataSource = dt;

        con.Close();
    }
}

1 个答案:

答案 0 :(得分:1)

快速浏览一下以下错误。

  1. 您的dal变量未被声明为实例,因为您没有定义静态,您需要提供一个新的运算符来创建实例。

  2. 您致电ds但未在您的gopher类中定义,因此它不存在或有定义。

  3. 您的数据访问层类方法返回一个数据集,但您实例化时不会存储返回的值。例如:

    var set = new DataAccessLayer()。RunSQLServerStoredProcedure(...);

  4. 变量set现在将保存您从方法返回的数据集,您还可以定义数据访问层。