http://www.baidu.com/s?word=System.InvalidOperationException%3A+%E5%9C%A8%E6%B2%A1%E6%9C%89%E4%BB%BB%E4%BD%95%E6%95%B0%E6%8D%AE%E6%97%B6%E8%BF%9B%E8%A1%8C%E6%97%A0%E6%95%88%E7%9A%84%E8%AF%BB%E5%8F%96%E5%B0%9D%E8%AF%95%E3%80%82&tn=sitehao123&ie=utf-8
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["project_systemConnectionString"]); SqlCommand cmd = new SqlCommand("select * from user_loading where username='" + Session["UserId"].ToString()+ "'",con); cmd.Connection.Open(); SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); string staff_name = reader["staff_name"].ToString(); 错误信息: 在没有任何数据时进行无效的读取尝试。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 在没有任何数据时进行无效的读取尝试。 源错误: 行 22: SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 行 23: 行 24: string staff_name = reader["staff_name"].ToString(); 行 25: this.TextBox3.Text= Session["UserId"].ToString(); 行 26: Response.Write("<script>alert('reader值为:'" + staff_name + ")</script>"); 源文件: d:\My Documents\WebSites\WebSite_5_5\Client\staff_info_update.aspx.cs 行: 24 我是想根据Session里的用户名test(用户登录表如:{test,test,普通用户,孙X})然后获取这个“孙X”这个值。有知道的麻烦告诉我下,谢谢 急求解!!!!!!!!
这个问题很简单啊, 你不能保证你Session["UserId"].ToString()+ 里面一定有值,(假如是""。那就读取不到数据的.). 所以在使用SqlDataReader 读取数据的时候要加如下的判断. while(dr.read()()) { string staff_name = read()er["staff_name"].ToString(); 行 25: this.TextBox3.Text= Session["UserId"].ToString(); } 必要情况下要加异常处理。 些程序什么情况都要考虑。 这样你的程序才能安全