System.Data.IDataReader IDR = null;
IDR=FindByName(UserName);
断点 (string)IDR["UserName"];IDR.GetValue(0);IDR["UserName"].ToString();
都会出现异常,请问怎么读取IDR里的值?

解决方案 »

  1.   

    TO:FindByName(UserName);你的FindByName返回的是什么类型?最好把这个方法具体代码贴出来看下..
      

  2.   

    返回是:
    Private System.Data.IDataReader FindByName(string username)
    {}
    System.Data.IDataReader dss=null;
    dss=AddPowerEdu.Security.UserManager.FindByUserName(this.UserName,"Teacher");
    string user_id=(string)dss["user_id"];
    System.Data.IDataReader dr1=AddPowerEdu.Security.RightManager.FindByRightName(user_id);
    if(!dss.Read())
    {
    string str=(string)dss["user_id"];
    Session["id"]="";
    Session["id"]="1";
    Response.Redirect("Skin2/framedefault.aspx");
    }
      

  3.   

    随便写了个例子: SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                SqlCommand cmd = new SqlCommand("select * from studentDetails", con);
                con.Open();
                IDataReader sdr = cmd.ExecuteReader();
                while (sdr.Read())
                {
                    Console.WriteLine(sdr["sname"].ToString());
                }没有问题..我觉得应该是你FindByName的问题吧..把这个方法下的具体代码贴出来看下..另外把出现的异常也说一下..
      

  4.   

    public System.Data.IDataReader FindByUserName(
    string userName,string userType
    )
    { // Read the runtime setup.
    DataSettings settings = SettingsManager.DataSettings; // Attempt to load the parameters.
    SqlParameter[] parms = SqlHelperParameterCache.GetCachedParameterSet(
    settings.ConnectionString,
    SQL_FIND_BY_USER_NAME
    ); // Did we fail?
    if (parms == null)
    { // Create the parameters.
    parms = new SqlParameter[] 
    {
    new SqlParameter(PARM_USER_NAME, SqlDbType.VarChar, 50),
    new SqlParameter("@user_type", SqlDbType.VarChar, 50)
    }; // Store the parameters in the cache.
    SqlHelperParameterCache.CacheParameterSet(
    settings.ConnectionString, 
    SQL_FIND_BY_USER_NAME, 
    parms
    ); } // End if we failed to load the parameters. // Assign values to the parameters.
    parms[0].Value = userName;
    parms[1].Value = userType; // Execute the SQL statement.
    return SqlHelper.ExecuteReader(
    settings.ConnectionString,
    CommandType.StoredProcedure, 
    SQL_FIND_BY_USER_NAME, 
    parms
    ); } // End FindByUserName()