我的代码适用于工作簿创建者。
该方法从DB中获取问题并将其放入列表中。
我正在尝试将数据放入我的问题列表中,我有一个问题类和一个getpageDB方法,但仍然会收到错误“对象引用未设置为对象的实例。”
public DataSet getPageDB(string myQuery, string ConnStr)
{
OleDbDataAdapter oda = new OleDbDataAdapter (myQuery, ConnStr);
DataSet ds = new DataSet();
oda.Fill(ds);
foreach(DataRow pRow in ds.Tables[0].Rows){
_currentQuest.question=pRow["question"].ToString();
_currentQuest.questionNumber =Convert.ToInt16( pRow["questionnumber"]);
_currentQuest.rightAnswer=pRow["answer"].ToString();
_currentQuest.goodFeedBack=pRow["goodfeedback"].ToString();
_currentQuest.badFeedBack1=pRow["badfeedback1"].ToString();
_currentQuest.badFeedBack2=pRow["badfeedback2"].ToString();
AllQuestions.Add(_currentQuest);
}
return ds;
}
我得到的错误是:
对象引用未设置为对象的实例。
这个错误是什么意思?有什么问题?
答案 0 :(得分:2)
在访问类的属性/成员之前始终初始化类。
对于前任;
class objcls = null;
objcls = new class();
objcls.name =“堆栈溢出”;
答案 1 :(得分:0)
正如它所说,您正在尝试访问尚未实例化的对象类。
尝试在debug中运行以查看哪一行引发错误。
例如,在尝试使用它们之前,您是否已实例化_ currentQuest
或AllQuestions
?
答案 2 :(得分:0)
您总是需要_currentQuest的新Instanace!
在为问题添加值之前,问题编号等等写
_currentQuest = new Question();
答案 3 :(得分:0)
尝试在使用 NEW 运算符之前实例化每个对象。 您可以通过调试了解该对象。请尝试调试并找到哪一行引发错误。
答案 4 :(得分:0)
看起来数据集是空的。这意味着您需要先查看您的查询。它没有正确执行,因此mot填充数据集,而数据集又没有任何行,当你启动foreach循环时,它就是抛出错误。为此,您可以调试代码并找出它正在抛出和异常的位置。
答案 5 :(得分:0)
对象引用错误意味着您的一个或多个对象的值为null,并且您正在尝试访问该对象的方法或属性。
您的代码可能有多个地方可能会破坏:
public DataSet getPageDB(string myQuery, string ConnStr)
{
OleDbDataAdapter oda = new OleDbDataAdapter (myQuery, ConnStr);
DataSet ds = new DataSet();
oda.Fill(ds);
foreach(DataRow pRow in ds.Tables[0].Rows){ //here if there are no tables in the dataset. So you must check if(ds.Tables.Count > 0) before executing the for loop.
//What is _currentQuest? Have you initialised it with a new keyword? Is it null when you try to use it?
_currentQuest.question=pRow["question"].ToString();
_currentQuest.questionNumber =Convert.ToInt16( pRow["questionnumber"]);
_currentQuest.rightAnswer=pRow["answer"].ToString();
_currentQuest.goodFeedBack=pRow["goodfeedback"].ToString();
_currentQuest.badFeedBack1=pRow["badfeedback1"].ToString();
_currentQuest.badFeedBack2=pRow["badfeedback2"].ToString();
//What is AllQuestions? make sure that this is not null.
AllQuestions.Add(_currentQuest);
}
return ds;
}