新手求解答怎么防止两个人同一时间同时注册一个账号


 protected void Button1_Click(object sender, EventArgs e)
    {
        string strconn = "server=pc1234;database=WangDian;uid=sa;pwd=123456";//连接数据库
        SqlConnection conn = new SqlConnection(strconn);
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();


        cmd.CommandText = "SELECT COUNT(*) FROM 管理员 WHERE 账号=@username and 密码=@passwd";
        cmd.Parameters.Add(new SqlParameter("username", txtUserName.Text));
        cmd.Parameters.Add(new SqlParameter("passwd", txtPwd.Text));
        int i = Convert.ToInt32(cmd.ExecuteScalar());

        if (i > 0)
        {

            Response.Write("<script> alert('添加数据失败!')</script>");
            txtUserName.Text = "";
            txtPwd.Text = "";

        }


        else
        {

            cmd.CommandText = "INSERT INTO 管理员(账号,密码)VALUES(@username,@passwd)";
           


            int var = cmd.ExecuteNonQuery();

            if (var > 0)
            {
                Response.Write("<script> alert('添加数据成功!')</script>");

                txtUserName.Text = "";
                txtPwd.Text = "";
            }




            conn.Close();






        }
    }
}

这是注册的那个按钮,怎么解决防止两个人 同一时间同时注册一个账号

14 个解决方案

#1


你可以把 [账号] 声明为 primary key。

#2


用程序和数据库实现 随便你选啊
说个简单的你在数据库建个唯一索引不就插不进去了

#3


存储过程,事务,都行
总之你得保证查询和插入是在同一个过程里,避免出现脏数据

#4


同求同求,望大牛详细解答。。。。

#5


如果不考虑用户的体验,只是防止重复注册
那么用楼上2位的办法当然是最简单的.
当然这样一来你就无法区分到底是因为有其他用户抢先注册了账号导致插入失败,还是由于网络问题或数据库问题导致插入失败

#6


username增加唯一性约束

#7


引用 6 楼 starfd 的回复:
username增加唯一性约束



老师说不能设置约束用事务怎么做求解

#8


用事务?一定要?
那就是建个存储过程,开始事务(这个要求表锁),先select有没有用户,没有才insert

#9


引用 7 楼 u011147081 的回复:
Quote: 引用 6 楼 starfd 的回复:

username增加唯一性约束



老师说不能设置约束用事务怎么做求解


有详细点的代码吗?从来没写过事务

#10


你把查询和新增放到一个事物里  应该可以吧
Begin
    select table
    有 就  Rollback
    没有 就
    insert table
Commit
这样应该可以吧

#11


存储过程写个吧。不会?看书去。

#12


1、在插入前先检查是否存在
2、数据库底层用主键或唯一索引确保无脏数据进入

#13


username增加唯一性约束
代码层 可以加 lock 防止多个线程同时操作

#14


加上唯一主键吧
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告