2011-08-23 50 views
0

我正在用C#開發一個帶有SQL Server 2005後端的桌面應用程序。如何管理SQL Server 2005中的多個事務

我想將行插入到兩個表中,在table1中將保存一行,並在table2中一次保存超過100行。

我希望當保存正在進行時,如果電源故障或由於任何原因程序終止,那麼不完整的事務不應該保存在數據庫中;但如果事務成功完成,則應將其保存到數據庫中。

我使用Connection.BeginTransaction()方法

clsData dSave = new clsData(); 
dSave.Open(); // 
System.Data.SqlClient.SqlTransaction tr = dSave.Connection.BeginTransaction(); 

clsData是其中的一些變量的聲明一樣SqlConnectionSqlCommandSqlAdapter類,一個名爲變種是Connection在這個類中聲明和方法Open() 聲明在這個類中打開連接。

難度在於,在一些10-20個命令後,tr.Connection突然變爲空,在那裏我的連接仍然打開。

有人可以幫我解決這個問題。

回答

3
  • 使用存儲過程調用
  • 使用XML或表值參數的數據傳遞
  • 管理SQL Server中的交易

不要100+調用數據庫服務器在客戶端事務

+0

謝謝你寶貴的feeb回來,但我的問題是,我不能使用存儲過程,因爲我的應用程序是桌面應用程序,我們不想發佈我們的代碼,從中用戶可以瞭解我們的數據結構 –

+0

@Haider Ali:所有代碼都可以進行逆向設計。無論如何,請按照你的想法去做:你沒有給我們足夠的信息來幫助你。我告訴你如何做到這一點*正確* – gbn