通过vb.net中的oledbcommand选择不拾取最近的更改
我正在使用下面的代码计算access数据库中的下一个唯一订单号。ServerDB是一个“System.Data.OleDb.OleDbConnection” 如果我随后创建一个WORKORDR(使用不同的数据库连接),代码将不会获取新的“下一个订单号” e、 g 将向iFoo和iFoo2返回相同的值 如果作为“NewOrderNo”函数的一部分关闭然后重新打开serverDB,那么它就可以工作。iFoo和iFoo2将是正确的 在这种情况下,是否有任何方法可以强制“System.Data.OleDb.OleDbConnection”刷新数据库,而无需关闭并重新打开连接。 e、 g.是否有与serverdb.refresh或serverdb.FlushCache等效的内容 如何创建订单。 我想知道这是否是由于在创建订单后没有更新我的事务造成的。我正在使用XSD创建订单,我用来创建记录的代码是通过vb.net中的oledbcommand选择不拾取最近的更改,vb.net,oledb,oledbconnection,Vb.net,Oledb,Oledbconnection,我正在使用下面的代码计算access数据库中的下一个唯一订单号。ServerDB是一个“System.Data.OleDb.OleDbConnection” 如果我随后创建一个WORKORDR(使用不同的数据库连接),代码将不会获取新的“下一个订单号” e、 g 将向iFoo和iFoo2返回相同的值 如果作为“NewOrderNo”函数的一部分关闭然后重新打开serverDB,那么它就可以工作。iFoo和iFoo2将是正确的 在这种情况下,是否有任何方法可以强制“System.Data.OleD
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
我总是在使用连接对象后将其扔掉。由于连接池,获得新连接的成本很低。来自 Microsoft Jet的读缓存是 每个页面超时毫秒更新一次 (默认值为5000ms=5秒)。信息技术 还有一个惰性写入机制 在单独的线程上对主线程进行操作 处理,从而将更改写入 磁盘同步。这两个 机制有助于提高性能,但 在某些需要 高并发性,它们可能会创建 问题
- 如果可能,只需使用一个连接即可李>
- 回到VB6,您可以使用ADO刷新自身。我不知道用VB.NET是否可行。我的谷歌fu今天似乎很弱李>
- 您可以,但这将影响计算机上使用Jet引擎的所有程序(即Access数据库的编程使用)
iFoo = NewOrderNo
CreateNewWorkOrderWithNumber(iFoo)
iFoo2 = NewOrderNo
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