首页 新闻 会员 周边 捐助

在asp.net中如何防止用户名的重复

0
悬赏园豆:5 [已解决问题] 解决于 2010-12-06 14:55

本人是新手。刚刚学习ASP的知识。。。下面是本人用SQL存储过程进行添加用户。

textbox 1    是用户名,

textbox2,textbox3---2个都是密码

textbox 4        问题 ,

textbox5           答案,

textbox6           邮箱,

名称

类型

约束

説明

logon_name

varchar(50)

无重复

主键,注册帐号

logon_password

varchar(20)

 

帐号密码

sex

varchar(10)

 

性别

question

varchar(100)

 

密码找回问题

answer

varchar(100)

 

密码找回答案

E_mails

varchar(100)

 

邮箱

 

 

protected void Button1_Click(object sender, EventArgs e)
        {//检测验证控件是否通过验证
            if (IsValid)
            {    //从配置文件App.config文件的strConnection节点中获得连接语句
                string strConnection = "Data Source=20100908-1712;Initial Catalog=图书馆;Integrated Security=True";
                //通过连接语句实例化SQL连接对象
                SqlConnection sqlCon = new SqlConnection(strConnection);
                using (sqlCon)
                {
                    sqlCon.Open();
                    SqlCommand sqlCom = new SqlCommand();
                    //命令类型为存储过程
                    sqlCom.CommandType = CommandType.StoredProcedure;
                    sqlCom.Connection = sqlCon;
                    sqlCom.CommandText = "addlogon";
                    // 进行信息的添加:数据库信息与textBox中的信息连接,并在数据库中存入,但是不显示信息
                    SqlParameter parm1 = new SqlParameter("@logon_name", SqlDbType.NVarChar, 50);
                    parm1.Value = TextBox1.Text;
                    sqlCom.Parameters.Add(parm1);
                    SqlParameter pew1 = new SqlParameter("@logon_password", SqlDbType.NVarChar, 50);
                    pew1.Value = TextBox2.Text;
                    sqlCom.Parameters.Add(pew1);
                    SqlParameter sex1 = new SqlParameter("@sex", SqlDbType.NVarChar, 50);
                    sex1.Value = DropDownList1.SelectedValue;
                    sqlCom.Parameters.Add(sex1);
                    SqlParameter question1 = new SqlParameter("@question", SqlDbType.NVarChar, 50);
                    question1.Value = TextBox4.Text;
                    sqlCom.Parameters.Add(question1);
                    SqlParameter answer1 = new SqlParameter("@answer", SqlDbType.NVarChar, 50);
                    answer1.Value = TextBox5.Text;
                    sqlCom.Parameters.Add(answer1);
                    SqlParameter mails1 = new SqlParameter("@E_mails", SqlDbType.NVarChar, 50);
                     mails1.Value = TextBox6.Text;
                     sqlCom.Parameters.Add(mails1);
                    int i = sqlCom.ExecuteNonQuery();
                    if (i == 0)
                    { Response.Write("请输入信息"); }
                    //进行提示是否命令执行成功!if成功。、则显示successed。否则filed try again。
                    if (i > 0)
                    {
                        Response.Write("感谢你的注册,您已经注册成功!");
                        // 注册成功后。所有的信息将全部清空
                        TextBox1.Text = "";
                        TextBox2.Text = "";
                        TextBox3.Text = "";

                        TextBox5.text = "";
                        TextBox4.Text = "";
                        TextBox6.Text = "";
                    }
                    else
                    {
                        // 注册失败后。所有的信息将不会被清空。保留便于修改
                        Response.Write("抱歉!你注册失败!请重新注册!");

                    }
                }
            }

 

这是添加注册用户信息。。

  我想实现防止同样的用户名注册。就是说。123这个用户已经被人注册了。别人就不能注册这个“123”这个帐号。。

还有。在最后添加成功后,提示成功信息5秒。然后页面跳转

  

是否需要改动数据库。要添加什么约束。在什么地方添加。。请大虾们帮帮忙。

 

还是说。我的代码出现错误。无法添加约束??。。请求帮忙解决问题。。 

ying-hong的主页 ying-hong | 初学一级 | 园豆:195
提问于:2010-12-06 11:59
< >
分享
最佳答案
0

不要一点按钮就添加,步骤:

1.点击按钮时首先根据输入的用户名去数据库查询,

2.查询结果:如果已经有这个用户名,返回并提示用户,如果没有,则执行你写的添加代码。

收获园豆:2
【舍予】 | 初学一级 |园豆:172 | 2010-12-06 12:29
其他回答(4)
0

不争议把用户名设置为主键。

添加用户的时候,用一个select查找看库里是否有重复的用户,如果返回记录大于0则说明有相同的用户名,则提示用户名已存在。

收获园豆:2
Astar | 园豆:40805 (高人七级) | 2010-12-06 12:39
0

把检查用户名是否重复的逻辑写进添加的存储过程里,先检查然后再添加,给存储过程一个输出参数,然后程序里面根据输出参数的值在界面给用户提示,检查用户名是否重复之类的最好在客户端用ajax方式给用户一个即时的提醒...

收获园豆:1
三桂 | 园豆:3565 (老鸟四级) | 2010-12-06 13:04
0

同意Astar的说法,你也可以把这个用户名控件放在ajax的updatepanel控件中来异步刷新。

Lee's Blog | 园豆:530 (小虾三级) | 2010-12-06 13:05
0

如果设定主键的话,你执行添加动作的时候会返回错误的,那基本上这个时候直接设定错误讯息就可以了

John29 | 园豆:825 (小虾三级) | 2010-12-06 13:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册