我正在尝试使用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();
}
}
答案 0 :(得分:1)
快速浏览一下以下错误。
您的dal
变量未被声明为实例,因为您没有定义静态,您需要提供一个新的运算符来创建实例。
您致电ds
但未在您的gopher类中定义,因此它不存在或有定义。
您的数据访问层类方法返回一个数据集,但您实例化时不会存储返回的值。例如:
var set = new DataAccessLayer()。RunSQLServerStoredProcedure(...);
变量set
现在将保存您从方法返回的数据集,您还可以定义数据访问层。