日期:2014-05-17  浏览次数:20730 次

vs2012中使用DataReader读取sql server数据时出现异常
        vs2012中使用DataReader读取sql server数据时出现异常,无法读取。
        因为要使用sql表中的数据看是否匹配已有数据,要把数据库的char类型转换为string类型,同时使用RTRIM将char的末尾空格去掉。C#写入sql的语句是string sql = "Select RTRIM(房间号),账单编码 from 客房入住登记表";当执行到string Fnum = textBox1.Text.Trim();
                  while (dataReader.Read()){
                      if(Fnum==(string)dataReader["房间号"])
                      账单编码.Text = (string)dataReader["房间号"];}
时出现异常“System.IndexOutOfRangeException”类型的异常 object {System.IndexOutOfRangeException}。
        如果在sql语句中不使用RTRIM语句则不会出现异常,但因为char转换成string时末尾的几个空格导致if条件无法满足。这个问题该如何解决呢?

------解决方案--------------------

string sql = "Select RTRIM(房间号) 房间号,账单编码 from 客房入住登记表";

------解决方案--------------------
必须为RTRIM(房间号)取名称
Select RTRIM(房间号) 房间号,账单编码 from 客房入住登记表
否则DataReader结构中没有房间号这一列,会抛出超出索引界异常