SqlDataReader datareader = command.ExecuteReader();                 if (datareader.Read())                { 
                    num = Convert.ToInt32(datareader["roomid"]); 
                } //换成:
num =Convert.ToInt32(command.ExecuteNonQuery().ToString()); 

解决方案 »

  1.   

    select roomid from room where number='307'执行这个有没有数据
    if (datareader.Read())        
    修改为while(datareader.Read())吧
      

  2.   

    这是说明你的“select roomid from room where number='307'”  的查询根本没有结果出来,你好好检查下能否在数据库中执行?
      

  3.   

    我想请问:我这里只有得到一行一列的数据,有if和while的区别在那里?
      

  4.   

    加try catch单步调试一下
      

  5.   

    select roomid from room where number='307' 这个执行语句的值肯定为NULL,先查找一下。在查询分析器里面执行以下上面的语句.
      

  6.   

    调试看看datareader.HasRows的结果为啥
    if只能执行一次,while循环执行,对你这里来说影响不大,
      

  7.   

    int num=0;num = Convert.ToInt32(datareader["roomid"]); 
    我新手,已经是int型问什么还要Convert.ToInt32呢?num = datareader["roomid"]; 
      

  8.   

    number='307'数据库中这个number是什么类型的?  加引号干什么  难道是字符型的