我想知道如何获得
所需的时间INSERT
在msaccess数据库中查询。
我使用OleDbCommand,当然还有OleDbConnection对象
我正在运行一个循环:
For Each item In ListBox.SelectedItems
Try
cmd.CommandText = "INSERT INTO table(x) VALUES(" + item.ToString + ")"
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next
之后我通过最近在数据库中插入这些项来填充另一个列表框。
第二个列表框的代码:
选择项目FROM表
for each item returned by query:
listbox2.addItem(item)
end loop
我连接速度很慢,所以我的第二个列表框不会马上填满。
通过让我的线程休眠5秒然后运行SELECT
查询解决了我的问题,因为只有5秒后我才能看到新插入的数据,但它并不总是这样,我可能需要等待4s甚至7s。我希望Try
不会减慢这个过程。
答案 0 :(得分:1)
为什么要重新查询数据库。只需使用您插入的相同值填充第二个列表框即可。 Try Catch完成后,请确保这样做。或者返回标量以检查确定插入是否有效,然后将您的项目添加到第二个列表框。这样你就不需要重新查询,这是迄今为止最慢的瓶颈。
此外,如果您必须重新查询,是否正在关闭并重新打开您的连接?如果不是这样的话,只需将它保持打开状态,直到完成db。
答案 1 :(得分:1)
这是一个缓存问题。
这个问题的答案和相关文章解释了它:
Why is my Access database not up-to-date when I read it from another process?