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

加密密码为何登录不成功?
注册按钮代码如下:
private void btnreg_Click(object sender, System.EventArgs e)
{
string strName=txtName.Text.Replace("'","''");
string UnEncryPass=txtPass.Text.Replace("'","''");
string EncryPass=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(UnEncryPass,"md5");
string strsql="insert into db_User values('"+strName+"','"+EncryPass+"')";
string strcon="server=(local);database=myDatabase;Integrated Security=SSPI";
SqlConnection con=new SqlConnection(strcon);
SqlCommand cmd=new SqlCommand(strsql,con);
con.Open();
int i=cmd.ExecuteNonQuery();
if(i==1)
Response.Write("<script>alert('注册成功!');</script>");
else
Response.Write("<script>alert('该用户名已经注册!');</script>");
}


注册后,用企业管理器查看表中确实添加一条记录;
登录按钮代码如下:
private void btnLogin_Click(object sender, System.EventArgs e)
{
string UserName=txtName.Text.Replace("'","''");
string UserPass=txtPass.Text.Replace("'","''");
string EncryPass=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(UserPass,"md5");
string strsql="select * from db_User where UserName='"+UserName+"' and UserPass='"+EncryPass+"'";
string strcon="server=(local);Integrated Security=SSPI;database=myDatabase";
SqlConnection con=new SqlConnection(strcon);
con.Open();
SqlCOmmand cmd=new SqlCommand(strsql,con);
int i=cmd.ExecuteNonQuery();

if(i==1)
Response.Write("<script>alert('登录成功!');</script>");
else
Response.Write("<script>alert('用户名/密码错误!');</script>");


}
为何问题提示用户名/密码错误呢?
注意:表中用户名为主键,不可能存在相同的用户名!

------解决方案--------------------
ExecuteNonQuery()执行SQL命令,并返回被影响的行数,只有Update、Insert及Delete三个SQL语句会返回被影响的行数。
ExecuteReader()执行SQL命令,返回值为DataReader对象。

我想是这个原因吧.

------解决方案--------------------
int i=cmd.ExecuteNonQuery(); 这句不对。ExecuteNonQuery只对数据库有改动时才有作用,建议查下msdn