【发布时间】:2023-03-04 12:00:01
【问题描述】:
我有一个访问表,用于跟踪每当导出其他数据时递增的数字。在
using (OleDbConnection con = new OleDbConnection(DatabaseProvider + DatabaseFilePath))
{
con.Open();
using (OleDbCommand cmd = con.CreateCommand())
{
cmd.CommandText = "DELETE FROM IncrementingNumberTable WHERE [Num]=" + curr + ";";
cmd.Connection = con;
cmd.ExecuteNonQuery();
}
curr++;
using (OleDbCommand cmd = con.CreateCommand())
{
cmd.CommandText = "INSERT INTO IncrementingNumberTable ([Num])VALUES(" + curr + ");";
cmd.Connection = con;
cmd.ExecuteNonQuery();
}
}
代码按预期工作,但有可能(尽管不太可能)在第二个命令中发生连接错误,这意味着我增加的数字丢失了。这发生在调试时,如果它发生在实时系统中就不好了。
【问题讨论】:
-
一旦记录存在,UPDATE 查询不是更适合吗?使用参数避免sql注入和格式错误。搜索“数据库事务”以获取有关更新多条记录等的信息。