OledbDataReader没有检索所有列

时间:2010-10-08 09:15:54

标签: c#

我从表中检索数据时遇到的问题是:如果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();
                    }

                  }

问题是,它在Forth Column上给出了错误,即Program.Pm = updateReader.GetString(4);错误是specified cast is not valid(实际上在第3列之后它给出异常)但我非常确定转换不是问题,当我删除顶部的if condtionif (!updateReader.HasRows)然后代码完全正常时,我想知道该读者的问题是什么,如果我检查读者是否有行?

1 个答案:

答案 0 :(得分:2)

来自the GetString() documentation

  

不进行转换;因此,检索到的数据必须已经是一个字符串。

看起来Recharge.pm不是字符串或包含NULL值。