如何捕获非主键异常

时间:2014-02-04 13:45:29

标签: c# exception-handling try-catch primary-key

我现在面临的问题是,当用户键入同一封电子邮件时,它仍会注册该成员。我不希望将我的电子邮件设置为主键。如果有人在try / catch语句下输入相同的电子邮件,我有办法停止该过程吗?

public string registerMember()
{
    string status = "";
    string ConnString = Properties.Settings.Default.ConnectionString;

    string sql = "INSERT INTO Member (userName,Email,Gender,DateOfBirth,Nationality) VALUES(@name, @email, @gender, @dateOfBirth, @nationality)";

    using (SqlConnection cn = new SqlConnection(ConnString))
    {
        SqlCommand cmd = new SqlCommand((sql), cn);

        cmd.Parameters.AddWithValue("@name", name);
        cmd.Parameters.AddWithValue("@email", email);
        cmd.Parameters.AddWithValue("@gender", gender);
        cmd.Parameters.AddWithValue("@dateOfBirth", dateOfBirth);
        cmd.Parameters.AddWithValue("@nationality", nationality);

        try
        {
            cn.Open();
            cmd.ExecuteNonQuery();   
            status = "Member have been registered successfully!"; 
        }
        catch (Exception ex)
        {
            status = ex.Message;
            throw;    
        }
        finally
        {
            cmd.Dispose();
        }
    }
    return status;

}

1 个答案:

答案 0 :(得分:0)

最好的方法是编写另一个数据库查询,并检查我的朋友是否已经存在电子邮件。