SQL语句我查了,是对的,没有问题,不知道问题出在哪个地方了,郁闷半天了

解决方案 »

  1.   

    string i = "";
    SqlDataReader reader = mycon.ExecuteReader();
    if(reader.Read())
    {
    i = reader.GetString(0);
    }
      

  2.   

    楼上正解!mycon.ExecuteReader();返回果没有记录数据,则直接输出会报错。
    使用reader.Read()读记录后赋值
      

  3.   

      SqlDataReader reader = mycon.ExecuteReader();
      string i = reader.GetString(0);sqldatareader相当于向前的指针,必须调用dr.read()来控制其往前推移.
      

  4.   


    使用了reader.Read(),还是报异常,是不是读取的记录只有一行的原因啊?
      

  5.   

    if(reader.hasRows)
    {
    reader.Read();
    i = reader.GetString(0);
    }
      

  6.   

    调用read里面的数据一定要调用read.read()方法才行..
    单条数据用if(read.read()),多条数据用while(read.read())
      

  7.   


    是的,如果从数据库取多条记录不会有问题,如果只取一条记录就会有问题,以下是代码
    OleDbDataReader reader = cmd.ExecuteReader();
     if (reader.Read())

    string text1 = reader[2].ToString();

    是修改后的,之前用while(reader.Read())
    但是都报同样的异常,IF 和WHILE没有区别。reader[2]引发system.invalidOperationException
      

  8.   

    reader只能循环着读取完。用循环读reader
      

  9.   


    刚才使用这种方式,单步调试的时候,在监视框里输入reader[2],显示同样的异常,后来上了厕所回来什么都没有动,再次输入reader[2],就显示有数据了,后来重新调试,就再也没有出现数据!!!???