连接数据库判断用户是否存在??
下面的程序我已经把在检测到用户名已经存在时return了,为什么程序还会去增加记录.而我的表,id是主键,所以现在,用户名已经存在,去注册,会有错误提示:
id是主键是**** .....
那段检测用户名是否已经存在的程序,是不是错了.如何改? 3x
public void AddUser(object sender, System.EventArgs e)
{
if(cus_passwd2.Text != cus_passwd.Text)
{
Message.Text = "<font color=red>您两次输入的密码不一样!</font>";
cus_passwd2.Text = "";
cus_passwd.Text = "";
return ;
}
//下面是连接数据库
string strConnection = "server=CHEYO;";
strConnection += "database=bookstore;uid=sa;password=vv7g51;";
string strSQL= null;
SqlConnection objConnection = new SqlConnection(strConnection);
// =========== 验证用户名是否已经存在: ==========
strSQL="select id from customer;";
SqlCommand objCmd = new SqlCommand(strSQL,objConnection);
objConnection.Open();
SqlDataReader objReader = objCmd.ExecuteReader();
if (objReader.Read() && cus_id.Text.Trim() == objReader["id"].ToString().Trim())
{ Message.Text = "用户名已经存在!";return;}
objReader.Close();
// ========== 增加用户: ============= //
strSQL="insert into customer(id,passwd,name,email,phone,idcard,address,postcode,RegIP) ";
strSQL += "values ('"+cus_id.Text+"',"
+"'"+cus_passwd.Text+"','"+cus_name.Text+"','"+cus_email.Text+"','"+cus_phone.Text+"',"
+"'"+cus_idcard.Text+"','"+cus_address.Text+"','"+cus_postcode.Text+"',"
+"'"+Request.UserHostAddress+"')";
SqlCommand objCmd2 = new SqlCommand(strSQL,objConnection);
objCmd2.ExecuteNonQuery();
objConnection.Close();
Message.Text = "<font color=red>注册成功!</font>";
Response.Redirect("regok.html");
// ========== end ============= //
}
问题点数:30、回复次数:6Top
1 楼shixueli(我们总是不能随心所欲)回复于 2003-10-02 21:55:51 得分 25
if (objReader.Read() && cus_id.Text.Trim() == objReader["id"].ToString().Trim())
{ Message.Text = "用户名已经存在!";return;}
-->
while(objReader.Read())Top
2 楼CMIC(大象)回复于 2003-10-02 22:04:14 得分 5
// =========== 验证用户名是否已经存在: ==========
strSQL="select id from customer;";
SqlCommand objCmd = new SqlCommand(strSQL,objConnection);
objConnection.Open();
SqlDataReader objReader = objCmd.ExecuteReader();
if (objReader.Read() && cus_id.Text.Trim() == objReader["id"].ToString().Trim())
{ Message.Text = "用户名已经存在!";return;}
objReader.Close();
//改成下面的试试
strSQL="select id from customer where id='" & cus_id.Text.Trim() & "'";
SqlCommand objCmd = new SqlCommand(strSQL,objConnection);
objConnection.Open();
SqlDataReader objReader = objCmd.ExecuteReader();
if(!objReader.Read())
{
Message.Text = "用户名已经存在!";
return;
}
还有字段不要用"ID"这种关键字。
Top
3 楼cheyo(我爱这世界!)回复于 2003-10-02 22:05:07 得分 0
高手!
可以了.
可以跟我说一下为什么用if就不行吗?
好像也解释得通? hehe~Top
4 楼cheyo(我爱这世界!)回复于 2003-10-02 22:10:07 得分 0
回 CMIC(大象): 一样不行.
关于ID字段,谢谢你的提醒!Top
5 楼shixueli(我们总是不能随心所欲)回复于 2003-10-02 22:19:31 得分 0
to cheyo(cheyo):
很简单,因为SqlDataReader的Read方法是调用一次指向下一条数据,如果没有数据会返回false,如果用if,你只是读到了一条数据!
这个方法需要你赶着它往前跑Top
6 楼cheyo(我爱这世界!)回复于 2003-10-02 22:24:11 得分 0
对哦,这样只判断一次.晕了
谢谢,谢谢!Top




