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 中发生
其他信息: 未将对象引用设置到对象的实例。 展开
{
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 中发生
其他信息: 未将对象引用设置到对象的实例。 展开
2个回答
展开全部
DataReader(OleDbDataReader也是其中一种)都是单向读取的类,在读完一条记录之后,其读取指针是指向下一条记录的,并且不能恢复读取指针的位置。所以,你在for循环之前已经用while循环读取了OleDbDataReader中的所有记录,这时候再调用GetValue方法将会返回null(因为OleDbDataReader中记录全部读取完成,Read方法会返回false,value值会保持为null),也就是说是对null调用ToString方法(GetValue(aReader, t, 0).ToSring()),当然会发生异常了,因为调用ToString方法的对象未指定。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询