c#相当于adob记录集
本文关键字:记录 adob 相当于 | 更新日期: 2023-09-27 18:17:53
我正在使用VS2008, V3.5将VB6 windows应用程序转换为c#。我有一个SQL Server 2000数据库,我使用的数据存储和检索。一个表保存一条Int类型的记录,用于生成报价号,例如123456。在VB6中,我做了以下操作:
OpenDBCon
Set rst = New ADODB.Recordset
rst.Open "SELECT idx From tblQuoteIdx", cn, adOpenDynamic, adLockPessimistic
Select Case rst.BOF
Case False
rst.MoveFirst
Me.txtRef = rst!idx
tID = rst!idx + 1
OKToContinue = True
Case False
'Do something
End Select
If OKToContinue = True Then
Set rst = New ADODB.Recordset
rst.Open "update tblQuoteIdx set idx = '" & tID & "' ", cn, adOpenDynamic,
adLockPessimistic
End If
CloseDBCon
在c#中,我现在这样做:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = Vars.connstring;
conn.Open();
SqlCommand sqlComm = new SqlCommand("Select idx from tblQuoteIdx", conn);
Int32 tt = (Int32)sqlComm.ExecuteScalar();
Int32 tt2 = tt++;
SqlCommand sqlComm2 = new SqlCommand("Update tblQuoteIdx set " +
"idx = " + tt2 + "", conn);
sqlComm.ExecuteNonQuery();
conn.Close();
不幸的是,我发现现在没有"adlockpessimism"的游标锁定,当几个人同时击中记录时,可以显示相同索引号的多个实例。如果有人能解释一下如何使用ADODB。c#中的记录集用于此特定目的,并或使用记录锁以便在需要时锁定数据库记录,或者在。net框架和c#主体中以更好的方式完成相同的事情,我会很感激。提前感谢。
诺尔我相信你会发现这篇文章很有用:ado.net中的悲观锁定基本上,您需要将所有内容包装在事务中,以便在编辑开始时立即对记录应用锁。这样,在锁被释放之前,没有其他方法能够编辑这些值。