我有一個使用FirebirdSQL連接到Firebird 2.5數據庫的WinForms應用程序。 在這個應用程序中,我有一個FBConnection,用於與數據庫進行交互,還有一個控件提供了用於編輯數據庫的按鈕,文本框等各種事件處理程序。 當這個控件加載時我通過調用FBConnection實例的BeginTransaction()方法創建一個新的事務。 因此,當用戶與控件(按鈕)相互作用我打電話,像這樣在DB改變值的方法(通過調用存儲過程或執行SQL語句):使用FirebirdSQL(C#)執行多個事務
FbCommand command = new FbCommand(cmd_text, connection);
command.Transaction = transaction;
FbDataReader reader = command.ExecuteReader()
當用戶決定應用,他所做的所有更改到數據庫,他點擊我的控件上的「Apply」按鈕,調用transaction.Commit()或「Cancel」按鈕,調用transaction.Rollback()。
這工作得很好,但突然間我遇到了在我的應用程序中使用多個事務的問題。在一個應用程序中同時使用多個編輯控件的情況下,您似乎無法在一個連接內創建和使用多個事務。
我的問題是 - 我不知道如何使用一個連接創建多個並行事務。我開始相信FirebirdSQL是不可能的。似乎唯一的解決方案是爲每個活動事務創建與DB的新連接,但我並不喜歡這種方式。
如果我在FirebirdSQL中使用事務是錯誤的,或者任何人都知道如何解決我的問題,而不是創建與數據庫的多個連接,我會很感激建議。
簡單地使用每個交易一個連接有什麼問題? – Ralf
其中一個原因是打開和關閉數據庫的連接有時會非常緩慢,也許我錯了,但似乎並不是一個好習慣,爲每次必須執行的小事務不斷創建和關閉連接 –
Firebird本身支持每個連接多個事務,但我不確定Firebird。NET提供者支持這一點。 –