C# OledbDataReader未检索所有列

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

在从表中检索数据时,我没有什么问题。代码如下:如果db表中的列为空,则会引发异常


                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数据库