C# OledbDataReader未检索所有列
在从表中检索数据时,我没有什么问题。代码如下:如果db表中的列为空,则会引发异常C# OledbDataReader未检索所有列,c#,C#,在从表中检索数据时,我没有什么问题。代码如下:如果db表中的列为空,则会引发异常 string cmdText = "select member_id,disp_id,mobile_no,tm,pm,lm,due_date from Recharge"; string UpdateStatus = "",hepUpdateStatus=""; OleDbCommand cmdFinalUpdate
string cmdText = "select member_id,disp_id,mobile_no,tm,pm,lm,due_date from Recharge";
string UpdateStatus = "",hepUpdateStatus="";
OleDbCommand cmdFinalUpdate = new OleDbCommand(cmdText, conn);
OleDbDataReader updateReader = cmdFinalUpdate.ExecuteReader();
if (!updateReader.HasRows) // this condition is creating problem
MessageBox.Show("No Data Pending For Updation");
else
{
try
{
while (updateReader.Read())
{
Program.MemberID = Convert.ToInt64(updateReader.GetInt32(0));
Program.DispID = updateReader.GetString(1);
Program.Mobile = updateReader.GetString(2);
Program.Tm = updateReader.GetString(3);
Program.Pm = updateReader.GetString(4);
Program.Remarks = updateReader.GetString(5);
Program.DueDate = updateReader.GetString(6);
}
}
catch (Exception) { }
finally
{
updateReader.Close();
}
}
问题是,它在第四列给出了错误,即Program.Pm=updateReader.GetString(4)代码>错误是指定的强制转换无效
(实际上在第3列之后,它给出了异常),但我非常确定强制转换不是问题,因为当我删除顶部的if条件时,即if(!updateReader.HasRows)
则代码工作得非常好,如果我签入该读卡器是否有行,我想知道该读卡器有什么问题?来自:
不进行任何转换;因此,检索到的数据必须已经是字符串
看起来像是充电。pm不是字符串或包含空值。@Frederic:Of充电。pm
是字符串,我在上面提到,如果我删除if条件(注释),那么代码工作正常…@Orsol:你的意思是说列updateReader.GetString(4)
这是空的,或者变量Recharge.pm是空的?@Orsol:Recharge.pm不是空的,列'updateReader.GetString(4);'也不是空的..ne hw我已经说过亲爱的,如果我删除thjs条件if(!updateReader.HasRows)
,代码运行正常。如果在if
语句之外调用updateReader.HasRows
,代码是否仍然运行正常?您应该调用并只继续执行GetString()
如果返回false
。我可以看到您正在使用OleDb。什么是后端数据库?@controlbreak:它的MSAccess数据库