【问题标题】:Accessing DataSet Returned from my DAL访问从我的 DAL 返回的数据集
【发布时间】:2018-09-21 23:06:42
【问题描述】:

我正在尝试使用 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();
    }
}

【问题讨论】:

    标签: c# asp.net dataset


    【解决方案1】:

    一眼就能看出以下错误。

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

    2. 您调用 ds 但没有在您的 gopher 类中定义它,因此它不存在或没有定义。

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 2019-01-26
      • 2010-10-11
      • 2021-10-08
      • 1970-01-01
      • 2019-02-06
      • 2017-06-11
      • 2017-02-27
      • 2012-08-18
      相关资源
      最近更新 更多