gpt4 book ai didi

c# - 如果数据库中已存在值,如何显示消息?

转载 作者:行者123 更新时间:2023-11-29 22:16:06 24 4
gpt4 key购买 nike

我目前正在使用 Visual Studio 编写我的第一个 .Net 和 C# 应用程序,并且需要将应用程序生成的值写入 MySQL。目前,我可以很好地编写值 - 但我需要能够检查值是否存在并显示该行(如果存在),否则将新行插入表中。我的连接字符串在表单顶部定义。

我已经定义了以下内容,如果 LicenseKey 列中不存在重复值,它就会成功写入数据库。如果存在重复项,则会引发未处理的异常。

private void SaveDetails()
{
// MySQL 'insert' command
string InsertNewLicense = "insert into BCOM.LicenseDetails(LicenseeName,ComputerName,ContactName,ContactEmail,LicenseKey,CreationDate) values('" +this.textBoxLicenseeName.Text+ "','" +this.textBoxComputerName.Text+ "','" +this.textBoxContactName.Text+ "','" +this.textBoxContactEmail.Text+ "','" +this.textBoxLicenseKey.Text+ "','" +this.textBoxCreationDate.Text+ "');";
//MySQL instance details
MySqlConnection InsertLicenseDetails = new MySqlConnection(LicenseDatabaseConnection);
//MySQL command execution
MySqlCommand InsertCommand = new MySqlCommand(InsertNewLicense, InsertLicenseDetails);
// Handles command outputs.
MySqlDataReader InsertReader;
//Opens connection to run query on database
InsertLicenseDetails.Open();
// Here our query will be executed and data saved into the database.
MessageBox.Show("License Details Saved. Please ensure you have emailed the license to the customer.");
while (InsertReader.Read())
{

}
InsertLicenseDetails.Close();
}

我想要发生的是在采取不同操作之前对 LicenseKey 列运行检查以查看该值是否存在。如果该值不存在,我想将新行插入到表中(就像我现有的命令一样)。

但是,如果该值确实存在,我想弹出一个表单,显示重复项作为表单出现的行中的值。

我应该在哪里放入事件处理程序来读取 MySQLException 值?对于重复值或没有数据库响应,我必须响应什么异常?

最佳答案

我同意其他人在评论中所说的,你可以更改 SQL 查询来进行检查,而不是 2。

IF(SELECT ... WHERE A = B)
RETURN THAT THE VALUE ALREADY EXISTS
ELSE
INSERT NEW VALUE

还有关于 SQL 注入(inject)和参数化查询的很好的评论。查询字符串应该看起来更像

INSERT into BCOM.LicenseDetails(LicenseeName,ComputerName,ContactName,ContactEmail,LicenseKey,CreationDate) values(@LicenseeName, @ComputerName, @ContactName ...);

并且您的 SqlCommand 被参数化

InsertCommand.Paramaters.AddWithValue("@LicenseeName", this.textBoxLicenseeName.Text);
InsertCommand.Paramaters.AddWithValue("@ComputerName", this.textBoxComputerName.Text);
...

这应该是让您继续前进的良好开端。

关于c# - 如果数据库中已存在值,如何显示消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31196997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com