日期:2014-05-18  浏览次数:20504 次

这个简单问题不解决 别的没法进行了
有2个页面:
1:页面写的是登录信息
保存了session
if(dr.Read())
{       Session[ "User_id "]=dr[ "User_id "];//这里接受的总是空值~!!!急需解决
Session[ "user_power "]=dr[ "User_power "];
if((int)Session[ "User_power "]==0)
{Response.Redirect( "query.aspx ");
}
2.query页面调用sesion信息..
string   strsql   =   "select   *   from   student   where   StudentID=@id ";
                SqlCommand   cmd   =   new   SqlCommand(strsql,   conn);
                cmd.Parameters.Add(new   SqlParameter( "@id ",   SqlDbType.VarChar,   50));
                cmd.Parameters[ "@id "].Value   =   Session[ "User_id "].ToString();
//为什么总说@id未将对象引用设置到对象的实例?
怎么改正一下?

------解决方案--------------------
前面加个语句调试一下,除非你的datareader没有获得任何数据
------解决方案--------------------
楼上说得对,@id不是你的表字段名,如果改成@StudentID,或者可以。
------解决方案--------------------
服务器支持session吗?
------解决方案--------------------
@id 申明了吗?全文出来呀,别搞一半

Session[ "User_id "]=dr[ "User_id "];//这里接受的总是空值~!!!急需解决
dr的真吗?
全文出来
------解决方案--------------------
你在页面上用label把dr的值显示出来看看。
确认dr获得值了,再看后面的。
你贴出来的这段貌似没问题。
------解决方案--------------------
cmd.Parameters[ "@id "].Value = Session[ "User_id "].ToString();
//为什么总说@id未将对象引用设置到对象的实例?

将cmd.Parameters[ "@id "].改为cmd.Parameters[ "id "]
------解决方案--------------------
Session[ "User_id "]=dr[ "User_id "];

跟踪下这


------解决方案--------------------
Session[ "User_id "]=dr[ "User_id "];//这里接受的总是空值~!!!急需解决

单步调试一下你dr[ "User_id "]的值,应该是读出来的是空值,这可能跟数据库有关。
------解决方案--------------------
User_id是student表的字段吗 否则把 dr[ "User_id "]改为dr( "studentid ")
------解决方案--------------------
yls087412(codelive) <=====正解
------解决方案--------------------
这样做一下测试:
if(dr.Read())
{
string USERID=dr[ "User_id "]; //变量存储,加个断点,看看到底有数据没
Session[ "User_id "]=dr[ "User_id "];//这里接受的总是空值~!!!急需解决
Session[ "user_power "]=dr[ "User_power "];
if((int)Session[ "User_power "]==0)
{Response.Redirect( "query.aspx ");
}

不是这的话,检查SQL
------解决方案--------------------
你既然这里是Session[ "User_id "]=ss;

第二个页面当然要这样写
cmd.Parameters[ "@StudentID "].Value = Session[ "User_id "].ToString();