使用
MySql
C#
目的
检查输入到表中的数据的唯一性。
场景
1. 代码在数据库表中添加一个ssl_str类型为/csharp-net-page2.html
Field ssl_stris indexed 的引用字段:UNIQUE INDEX ssl_str( ssl_str)
2. 如果字段中输入了非唯一值,则代码返回错误
MySql.Data.MySqlClient.MySqlException (0x80004005):MySql.Data.MySqlClient.MySqlStream.ReadPacket() 中 MySql.Data.MySqlClient.NativeDriver.GetResult 中键“ssl_str”的重复条目“/csharp-net-page2.html” (Int32& affectedRow, Int64& insertedId) 到 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) 到 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 到 MySql.Data.MySqlClient .MySqlDataReader.NextResult() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为) 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
解决方案
1:如何让 try catch 处理这个特定错误?
那些。如果返回此错误,则将记录添加到另一个表中。
2. 这种方法是否最适合解决确定添加记录的唯一性问题,还是有其他更优的方法?
捕获适当类型的异常:
可以在此处找到所有异常代码的列表。
您也可以自己检查数据库中是否存在,但我认为这种方法非常有效。
PS:感谢@Nikita 和@Igor 的更正。
同样的事情,使用
when-clauseC# 6.0 和 VS 2015 可用