如何检查数据库C#中是否有用户名?

时间:2016-04-19 19:01:32

标签: c# database

我是C#和数据库的新手。我创建了一个数据库,我在其中添加了一个人的数据。实际上,是来自创建帐户的人的数据。我检查了电子邮件是否有电子邮件结构,我检查密码是否与重新输入密码相同。这里有代码:

if (Pass.Text != Rpass.Text)
        {
            MessageBox.Show("Password don't match!");
            return;
        }
        string emailCheck = Email.Text;

        bool valid = false;
        int count_dot = 0;

        for (int i = 0; i < emailCheck.Length; i++)
            if (emailCheck[i] == '@') valid = true;
            else if (emailCheck[i] == '.') count_dot++;

        if (valid == false || count_dot == 0)
        {
            MessageBox.Show("Invalid email!");
            return;
        }
        con = new SqlConnection(@"Data Source=MARIA-PC;Initial Catalog=Account;Integrated Security=True");
        con.Open();
        cmd = new SqlCommand("INSERT into [dbo].[Cont1] (Username,Password,First_name,Last_name,Birth_year,Email,Work_type) VALUES (@Username,@Password,@First_name,@Last_name,@Birth_year,@Email,@Work_type)", con);
        cmd.Parameters.Add("@Username", Username.Text);
        cmd.Parameters.Add("@Password", Password.Text);
        cmd.Parameters.Add("@First_name", First_name.Text);
        cmd.Parameters.Add("@Last_name", Last_name.Text);
        cmd.Parameters.Add("@Birth_year", DateTime.Parse(Birth_year.Text));
        cmd.Parameters.Add("@Email", Email.Text);
        cmd.Parameters.Add("@Work_type", Work_tpye.SelectedItem.ToString());
        cmd.ExecuteNonQuery();

        con.Close();

所以,我想要做的是在添加数据库之前检查,如果我已经在数据库中有用户名。我知道我必须做什么,但我不知道该怎么办。

3 个答案:

答案 0 :(得分:1)

查看Merge命令。网上还有许多其他教程。

答案 1 :(得分:0)

更新您的sql命令文本并使其更智能。对于前)

declare @p_user_name varchar(10) = 'test'

IF(NOT EXISTS(SELECT 1 FROM Users Where userName = @p_user_name))
BEGIN

    INSERT INTO Users(name)
    VALUES (@p_user_name)
END

答案 2 :(得分:0)

您有两种选择:

1 - 获取用户名等于用户名称的寄存器计数:

Query: "SELECT COUNT(*) FROM [dbo].[Cont1] WHERE Username=@Username"

如果结果大于0,则表示用户已经存在。

2 - 在Username字段上创建一个唯一索引(这是推荐的方法)并尝试插入,如果已经使用了用户名,则会导致重复密钥异常。