我正在建立注册页一个字段是昵称,当用户尝试注册时,我想验证它是否已经存在。
我知道验证可能是来自客户端的ajax调用,但我的问题是针对后端。
这可能是验证昵称存在的步骤,避免过多地调用DB,也不会占用太多的响应时间。假设包含昵称数据的db表太大。
使用包含昵称复制数据的缓存,并在用户成功注册时对其进行更新,是一种好方法吗?
我想复制这种行为
https://disqus.com/admin/signup/
欢迎任何形式的建议。

最佳答案

1)首先创建这样的过程

CREATE PROCEDURE InsertUser
@vUserName varchar(50)
,@Password varchar(50)
IF NOT EXISTS(SELECT 1 FROM tblUsers WHERE vUsername=@vUserName AND        vPassword=@Password)
BEGIN
INSERT INTO tblUsers(vUsername, vPassword) VALUES(vUserName , Password)
SELECT @@IDENTITY
END
ELSE
BEGIN
SELECT -500
END

2)编写调用此SP的函数
public int InsertUser(string vUserName, string vPassword)
        {
            System.Data.SqlClient.SqlConnection con = null;
            try
            {
                con = new System.Data.SqlClient.SqlConnection("strConnectionString");
                System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("InsertUser", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@vUserName", vUserName);
                cmd.Parameters.AddWithValue("@Password", vPassword);

                con.Open();

                object res = null;

                res = cmd.ExecuteScalar();
                con.Close();
                return res != null ? Convert.ToInt32(res) : 0;
            }
            catch (Exception)
            {
                throw;
            }
            finally { con.Close(); }
        }

        public void RegisterUser(string vUserName, string vPassword)
        {
            try
            {
                int res = InsertUser(vUserName, vPassword);
                if (res > 0)
                {
                    //user registered successgully
                }
                else if (res == 0)
                {
                    // a logical error occured in query
                }
                else if (res == -500)
                {
                    //user already exists. Please try another
                }
            }
            catch (Exception ex)
            {
                //Catch Exception here
            }
        }

07-24 09:50
查看更多