我很困惑,爲什麼我試圖返回一個數據集時收到空引用異常。C# - 爲什麼我得到一個空引用異常?
我有一個處理程序和DBaccess類在nTier體系結構。
首先這裏是我的casefile處理程序/和訪問類的一部分工作正常。 我包括他們,因爲我不知道爲什麼這個工程,其他不工作。
public class CaseFileHandler
{
CaseFileAccess caseaccess = null;
public CaseFileHandler()
{
caseaccess = new CaseFileAccess();
}
public DataSet getCaseFileDataset(int caseID)
{
return caseaccess.GetCaseFileDataSet(caseID);
}
public bool UpdateCasefile(CaseFile casefile)
{
return caseaccess.updateCasefile(casefile);
}
}
這裏是訪問類。返回數據集的方法工作得很好。
public class CaseFileAccess
{
const string CONNECTION_STRING = "Data Source = SQLSERVER;Initial Catalog=CaseManager;Integrated Security=SSPI;";
DBManager _DAL = new DBManager(DataProvider.SqlServer, CONNECTION_STRING);
public CaseFile GetCaseFile(int caseID)
{
CaseFile casefile = new CaseFile();
_DAL.Open();
_DAL.CreateParameters(1);
//stuff
return casefile;
}
public DataSet GetCaseFileDataSet(int caseID)
{
_DAL.Open();
_DAL.CreateParameters(1);
_DAL.AddParameters(0, "@CaseID", caseID);
DataSet ds = _DAL.ExecuteDataSet(CommandType.StoredProcedure, "sp_BL_AdjustmentsPage_READ_Case");
_DAL.Close();
return ds;
}
public bool updateCasefile(CaseFile casefile)
{
int result = 0;
_DAL.CreateParameters(56);
//stuff
_DAL.Open();
result = _DAL.ExecuteNonQuery(CommandType.StoredProcedure, "dbo.sp_BL_AdjustmentsPage_UPDATE_Case");
_DAL.Close();
return (result > 0);
}
}
這就是爲什麼我很困惑。 我創建了一個處理程序和訪問類返回的數據集綁定到ASP:下拉列表和結構相同的方式類作爲案卷類
這裏是處理類:
public class ddMenuHandler
{
ddMenuAccess menuaccess = null;
public ddMenuHandler()
{
ddMenuAccess menuaccess = new ddMenuAccess();
}
public DataSet dsCwkrCaseEditing(int cwID)
{
return menuaccess.CwkrsCaseEditing(cwID);
}
}
而且訪問類:
public class ddMenuAccess
{
const string CONNECTION_STRING = "Data Source = SQLSERVER;Initial Catalog=CaseManager;Integrated Security=SSPI;";
DBManager _DAL = new DBManager(DataProvider.SqlServer, CONNECTION_STRING);
public DataSet CwkrsCaseEditing(int cwID)
{
_DAL.CreateParameters(1);
_DAL.AddParameters(0, "@ID",cwID);
_DAL.Open();
DataSet ds = _DAL.ExecuteDataSet(CommandType.StoredProcedure, "sp_BL_CwkrsActiveCaseEdit");
_DAL.Close();
return ds;
}
}
這是我的代碼背後:
protected global::Adjustfiles.CaseFile casefile;
protected global::System.Web.UI.WebControls.DropDownList ddCaseworker;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
int caseID = Convert.ToInt32(Request.QueryString["caseID"]);
MySession.Current.editCaseID = caseID;
CaseFileHandler cfhandler = new CaseFileHandler();
casefile = cfhandler.getCaseFile(caseID);
DataSet DScase = cfhandler.getCaseFileDataset(caseID);
fv_casefile.DataSource = DScase;
fv_casefile.DataBind();
BindDdCwkrs();
}
}
private void BindDdCwkrs()
{
ddMenuHandler menuaccess = new ddMenuHandler();
DataSet ds = menuaccess.dsCwkrCaseEditing(casefile.CaseWorkerID);
int i = 0;
ddCaseworker.DataSource = ds;
ddCaseworker.DataTextField = "CwName";
ddCaseworker.DataValueField = "CwID";
ddCaseworker.DataBind();
ddCaseworker.SelectedValue = Convert.ToString(casefile.CaseWorkerID);
}
在線ddCaseworker.DataSource = ds;
是我得到我的空引用異常,menuaccess是null
。但爲什麼?
Source Error:
Line 29:public DataSet dsCwkrCaseEditing(int cwID)
Line 30:{
Line 31: return menuaccess.CwkrsCaseEditing(cwID);
Line 32:}
Line 33:
System.NullReferenceException was unhandled by user code
Message=Object reference not set to an instance of an object.
Source=Adjustfiles
StackTrace:
at Adjustfiles.ddMenuHandler.dsCwkrCaseEditing(Int32 cwID) in H:\Visual Studio 2010\Projects\Adjustfiles\Adjustfiles\ddMenuHandler.cs:line 31
at Adjustfiles.adjustFile66EditCase.BindDdCwkrs() in H:\Visual Studio 2010\Projects\Adjustfiles\Adjustfiles\adjustFile66EditCase.aspx.cs:line 45
at Adjustfiles.adjustFile66EditCase.Page_Load(Object sender, EventArgs e) in H:\Visual Studio 2010\Projects\Adjustfiles\Adjustfiles\adjustFile66EditCase.aspx.cs:line 29
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
'ddCaseworker'必須爲空。這是初始化在哪裏? – ChrisF 2013-04-04 11:39:52
請參閱http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net幫助'NullReferenceException' – pascalhein 2013-04-04 11:40:40
ddCaseworker是一個asp下拉列表,我很困惑你的意思。我將編輯我的代碼背後的ddcaseworker是對象 – Sonny123 2013-04-04 11:45:05