数据库连接如下public SqlDataReader GetRecordSet(string strsql)
{
  return new SqlCommand(strsql, SqlConnection1).ExecuteReader();
}
数据库是SQL的异常详细信息: System.InvalidOperationException: 在没有任何数据时进行无效的读取尝试。
sqlstr="select max(id) as myid from photocoll";
SqlDataReader getcoll_id=DataConn.GetRecordSet(sqlstr);
ycollid=Convert.ToInt32(getcoll_id["myid"]);
mycollid=mycollid+1;
getcoll_id.Close();
如何能取得最大ID呢?

解决方案 »

  1.   

    sqlstr="select max(id) as myid from photocoll";
    SqlDataReader getcoll_id=DataConn.GetRecordSet(sqlstr);
    if (getcoll_id.Read())
    {
       ycollid=Convert.ToInt32(getcoll_id[0]);
    }
    mycollid=mycollid+1;
    getcoll_id.Close();
      

  2.   

    or you should be trying
    public object GetScalar(string strsql)
    {
      return new SqlCommand(strsql, SqlConnection1).ExecuteScalar();
    }
    sqlstr="select max(id) as myid from photocoll";
    ycollid=Convert.ToInt32(DataConn.GetScalar(sqlstr));
    mycollid=mycollid+1;
      

  3.   

    就像楼上所说的要有判断是否有数据的代码if (getcoll_id.Read())
      

  4.   

    saucer(思归) 老大是对的,对于datareader的读取要加判断比如:
    if getcoll_id.Read() then

    end if或者while getcoll_id.Read()

    end while