簡體   English   中英

C#等同於adodb記錄集

[英]C# Equivalent of adodb recordsets

我正在使用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();

不幸的是,當幾個人同時點擊同一索引號的多個實例時,我發現沒有“adLockPessimistic”的游標鎖定。 如果有人可以解釋如何在C#中使用ADODB.Recordset用於此特定目的,或者使用記錄鎖以便在需要時鎖定db記錄,或者在.Net框架和C#主體內更好地完成同樣的事情。 ,我會很高興。 提前謝謝了。

諾埃爾

我相信你會發現這篇文章很有用: ado.net中的悲觀鎖定基本上你需要將一切都包裝在一個事務中,一旦編輯開始就對記錄施加鎖定。 這樣,在釋放鎖之前,沒有其他方法可以編輯值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM