C#问题,数据库,循环时可以计算有几行,但是再循环取数据就出错了,希望大神给解决下

staticobjectGetValue(OleDbDataReaderreader,introw,intcol){inti=0;objectvalue=null;whi... static object GetValue(OleDbDataReader reader, int row, int col)
{
int i = 0;
object value = null;
while (reader.Read())
{
if (i == row)
{
value = reader[col];
break;
}
i++;
}
// reader.Close();
return value;
}
for (int t = 0; t <d; t++)
{

month[t] = GetValue(aReader, t, 0).ToString();

}
这个是在for之前
while (aReader.Read())
{

d++;
}
“System.NullReferenceException”类型的未经处理的异常在 ConsoleApplication1.exe 中发生

其他信息: 未将对象引用设置到对象的实例。
展开
 我来答
Andy_Sun321
2014-11-04 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:727万
展开全部
DataReader(OleDbDataReader也是其中一种)都是单向读取的类,在读完一条记录之后,其读取指针是指向下一条记录的,并且不能恢复读取指针的位置。所以,你在for循环之前已经用while循环读取了OleDbDataReader中的所有记录,这时候再调用GetValue方法将会返回null(因为OleDbDataReader中记录全部读取完成,Read方法会返回false,value值会保持为null),也就是说是对null调用ToString方法(GetValue(aReader, t, 0).ToSring()),当然会发生异常了,因为调用ToString方法的对象未指定。
前行
2014-11-04 · 职员
前行
职员
采纳数:124 获赞数:303
国家计算机技能大赛三等奖

向TA提问 私信TA
展开全部
乱啊,跟踪一下,不就知道了。 value = reader[col]. 如果value返回是空,你直接ToString()当然不行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式