是否可以在 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/