我的问题是,我有以下代码用于将条目插入到MySQL数据库的表中:
Dim entryInserted As Boolean = True
Try
connection.Open()
If insertCommand.ExecuteNonQuery() = 0 Then
entryInserted = False
backgroundWorker.ReportProgress(0, ErrorOccurred & ": Could
not insert into database.")
End If
Catch ex As MySqlException
entryInserted = False
backgroundWorker.ReportProgress(0, ErrorOccurred & ": An
error occurred while trying to insert to the database.")
Finally
connection.Close()
End Try
insertCommand是INSERT INTO语句。通常,此插入操作需要连续执行多次,因为它会从文件中插入数据,然后从文件中删除该数据,所以我试图确保如果程序的连接丢失并且抛出MySqlException,那数据不会从文件中删除,以免丢失此数据并在有连接时将其保存。因此,在插入数据的过程中,我一直禁用本地连接以确保其正常工作。但是,我假设如果抛出MySqlException,则意味着数据没有插入表中(因此在这种情况下,为什么将entryInserted设置为false)。但是,当我查看插入到表中的最后一个条目的数据以及查询的数据时(在此期间连接被禁用并导致MySqlException),我发现它们是相同的吗?这意味着即使在Try块中执行此查询时抛出MySqlException,也无论插入数据是什么?所以我想知道,抛出MySqlException时会发生什么,因为显然并不一定能保证查询不成功?在这种情况下,如何确保查询不成功?我想知道的原因是因为我想避免在连接断开的情况下丢失数据,但是我也不想保存已经插入的数据,从而导致表中的信息重复。