vs2008 asp.net c# 最简单的用户登录代码,错在哪了(回答好的追加分数)

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:38:04
在test数据库中有一个表 t_user ,
在vs2008中有两个文本框 txtName、txtPwd 和一个按钮 btnLogin 用这些控件 实现一个简单的登陆功能

数据库已连上,问题是我输入什么都是登录成功,返回x的值是-1,请高手告诉我错在哪,给我正确的答案,另外最好附加语句的解析,不用太专业,我是新手。。
下面是button源代码:
protected void btnLogin_Click(object sender, EventArgs e)
{
string Username=txtName.Text;
string Pass=txtPwd.Text;
string sqlcon = "server=.;database=test;uid=sa;pwd=";
string sql="select * from t_user where user='"+Username+"' and pwd='"+Pass+"'";//user为数据库里面对应的用户名
SqlConnection con = new SqlConnection(sqlcon);
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
int x = cmd.ExecuteNonQuery();
con.Close();
if (x >= 1 || x <= 0)
{
Response.Write("登陆成功!");
}
else
{
Response.Write("失败!");
}
}

int x = cmd.ExecuteNonQuery();//这句话是执行sql语句并返回影响行数。如果没有影响行返回-1(没有这个用户)就验证失败。
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生事务回滚,返回值也为 -1

执行SELECT子句,数据库并无变化,自然返回-1。
所以应该是
string Username = txtName.Text;
string Pass = txtPwd.Text;
string sqlcon = "server=.;database=test;uid=sa;password=123456";//password最好设上
string sql = "select * from t_user where [user]='" + Username + "' and pwd='" + Pass + "'";//user为数据库系统表 加上[]
SqlConnection con = new SqlConnection(sqlcon);
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader reader = cmd.ExecuteReader();//datareader以只读方式单向查询数据库,每Read一次自动进入下一项,如果到底返回false
if (reader.Read())
{
Response.Write("登陆成功!");
}
else
{
Response.Write("