代码之家  ›  专栏  ›  技术社区  ›  FosterZ

OleDbDataReader未检索所有列

c#
  •  0
  • FosterZ  · 技术社区  · 14 年前

    我在从表中检索数据时几乎没有问题,这里是代码:如果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); 错误是 specified cast is not valid (实际上在第三列之后,它给出了例外)但我很确定铸造不是问题,因为当我移除 if condtion 在顶部 if (!updateReader.HasRows) 然后代码工作得很好,我想知道如果m签入“读卡器有行或没有行”,读卡器有什么问题吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Frédéric Hamidi    14 年前