我正在使用以下代码计算出访问数据库中的下一个唯一订单号。 ServerDB是“System.Data.OleDb.OleDbConnection”
Dim command As New OleDb.OleDbCommand("", serverDB)
command.CommandText = "SELECT max (ORDERNO) FROM WORKORDR"
iOrder = command.ExecuteScalar()
NewOrderNo = (iOrder + 1)
如果我随后创建了一个WORKORDR(使用不同的数据库连接),代码将不会获取新的“下一个订单号”。
e.g。
iFoo = NewOrderNo
CreateNewWorkOrderWithNumber(iFoo)
iFoo2 = NewOrderNo
将向iFoo和iFoo2返回相同的值。
如果我关闭然后重新打开serverDB,作为“NewOrderNo”功能的一部分,那么它可以工作。 iFoo和iFoo2都是正确的。
有没有办法强制“System.Data.OleDb.OleDbConnection”在这种情况下刷新数据库而不关闭并重新打开连接。 例如有没有相当于serverdb.refresh或serverdb.FlushCache
的东西我如何创建订单。 我想知道这是否可能是因为在创建订单后没有更新我的交易。我正在使用XSD创建订单,我用来创建记录的代码是......
Sub CreateNewWorkOrderWithNumber(ByVal iNewOrder As Integer)
Dim OrderDS As New CNC
Dim OrderAdapter As New CNCTableAdapters.WORKORDRTableAdapter
Dim NewWorkOrder As CNC.WORKORDRRow = OrderDS.WORKORDR.NewWORKORDRRow
NewWorkOrder.ORDERNO = iNewOrder
NewWorkOrder.name = "lots of fields filled in here."
OrderDS.WORKORDR.AddWORKORDRRow(NewWorkOrder)
OrderAdapter.Update(NewWorkOrder)
OrderDS.AcceptChanges()
End Sub
答案 0 :(得分:1)
我使用后总是抛弃一个连接对象。由于连接池获得新连接很便宜。
答案 1 :(得分:1)
来自MSDN
Microsoft Jet有一个读取缓存 每个PageTimeout毫秒更新 (默认为5000毫秒= 5秒)。它 还有一个懒惰的写机制 在与main的单独线程上运行 处理并因此将更改写入 磁盘异步。这两个 机制有助于提升绩效,但是 在某些需要的情况下 高并发性,他们可能会创建 问题。