SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["dsn"]);
conn.Open();
SqlCommand comm=new SqlCommand("select * from db_admin where username= '"+tbuser.Text.Trim()+"' and password='"+tbpwd.Text.Trim()+"'",conn);
             SqlDataReader sqlread=comm.ExecuteReader();
if(sqlread.Read()==true)
{
Session["username"]=sqlread["tbuser"].ToString();
Session["password"]=sqlread["tbpwd"].ToString();
sqlread.Close();
}
else
{
Response.Write("<script>alert('用户名和密码错误!')</script>");
}
conn.Close();
我写了这段代码,想让Session保存用户信息,然后其它页面引用!
我填写后提交,结果不行
1.大家说这种方法对吗???该怎么改??
2.顺便多提供一些指点!给一些这方面的资料;

解决方案 »

  1.   

    这样的方法是可以的,cookie也还是可以的
      

  2.   

    关键是我输入用户名后提交不能用啊!
    提示:
    Session["username"]=sqlread["tbuser"].ToString();
    有错!
    大家看看错在哪??
      

  3.   

    问题在这里,
    if(sqlread.Read()==true)
    你Read()之后,第一行的记录已经读取过了,然后现在的语句,读取的是第2行的语句,它是个null值,然后,你又执行下面这一句
    Session["username"]=sqlread["tbuser"].ToString();
    当把NULL值进行转换时,出错.
    你改用datatable,就不会出现这种问题.
    并且如果上述错误,你将后面的.ToString()去掉,应该也不会出现问题.
      

  4.   

    if(sqlread.Read())
    {
      保存你要的session就可以了
    }
      

  5.   

    帮你试过了,你的代码时可行的呀
    不会出错
    你看看Session["username"]=sqlread["tbuser"].ToString();
    中的“tbuser”是否和数据库中的字段名一致
      

  6.   

    还有用参数 不要直接select * from db_admin where username= '"+tbuser.Text.Trim()+" 
    如果我用的用户名是aaa'-- 这样会之间登录不用验证密码
    用参数安全性比较好
      

  7.   

    我也觉得是sqlread.Read()的问题,我以前碰到过这种情况!
      

  8.   

    int index=comm.ExecuteNonQuery();
    if(index>0)
    {
    Session["username"]=tbuser.Text.Trim();
    Session["password"]=tbpwd.Text.Trim();
    sqlread.Close();
    }
    else
    {
    Response.Write("<script>alert('用户名和密码错误!')</script>");
    }
    conn.Close();