C# - 如果要插入到 mysql 的值已经存在,如何通知用户

标签 c# mysql

是否可以在 C# 中提醒用户(使用 MessageBox)并 return; 如果他向具有唯一约束的列插入相同的值?我在 LastName、FirstName 和 MiddleInitial 中具有唯一性。

String command = "INSERT IGNORE INTO studentstbl (LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber, Year, IsEnrolled) VALUES (@lastname, @firstname, @middleinitial, @address, @age, @birthday, @gender, @guardian, @contactnumber, @year, 0);";

                MySqlCommand cmd = new MySqlCommand(command, conn);

                cmd.Parameters.AddWithValue("@lastname", lastnametxt.Text);
                cmd.Parameters.AddWithValue("@firstname", firstnametxt.Text);
                cmd.Parameters.AddWithValue("@middleinitial", middleitxt.Text);
                cmd.Parameters.AddWithValue("@address", addresstxt.Text);
                cmd.Parameters.AddWithValue("@age", agetxt.Text);
                cmd.Parameters.AddWithValue("@birthday", birthdaypicker.Text);
                cmd.Parameters.AddWithValue("@gender", gendercmb.Text);
                cmd.Parameters.AddWithValue("@guardian", guardiantxt.Text);
                cmd.Parameters.AddWithValue("@contactnumber", contactnumtxt.Text);
                cmd.Parameters.AddWithValue("@year", yearcmb.Text);

                try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    reset();
                    MessageBox.Show("Student successfully registered! You can now proceed to Payment to enroll student.");
                    conn.Close();
                }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

最佳答案

您要么必须先运行一个查询来检查,要么从您的查询中删除“忽略”,这样您就可以捕获错误。如果您关闭“忽略”,您可以捕获更具体的 MySqlException 并检查错误号。 1062 表示存在唯一 key 违规。 MySQL documentation有错误编号的完整列表。像这样:

catch (MySql.Data.MySqlClient.MySqlException ex)
{
    switch (ex.Number)
    {
        case 0:
            MessageBox.Show("Cannot connect to server.  Contact administrator");
            break;
        case 1045:
            MessageBox.Show("Invalid username/password, please try again");
            break;
        case 1062:
            MessageBox.Show("Name already exists");
    }
}
finally
{
    //Since you've taken the ignore off you can run whatever you wanted to run here.
}

关于C# - 如果要插入到 mysql 的值已经存在,如何通知用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616432/

相关文章:

c# - WinForms 窗口在遇到异步调用时改变尺寸

php - Codeigniter,无法建立 session ?

mysql - 添加行后如何检查给定行中的引用完整性?

mysql - "one-to-many"元数据过滤的一些 SQL 查询是什么?

c# - MVC 4 : View is not rendered with the correct data from a List<> in the Model

c# - 当我将它设置为详细信息时,如何将图像添加到 ListView?

mysql - 如何计算同一查询中的所有结果和特定计数 - MySql

mysql - 使用 MySQL Workbench 6.2 将 HSQLDB 迁移到 MySQL

c# - 使用 HttpClient C# 对许多不同网站的快速 Web 请求

c# - 通过将类名作为字符串提供来获取引用程序集中的类型?