2010-07-21 48 views
0

我有2個表loginInfo和UserInfo。 LoginInfo存儲用戶名和密碼,而userinfo存儲其他用戶詳細信息,如地址,郵政編碼,電話等。如何處理在發生異常時將值插入兩個表中

我首先將值插入loginInfo,如果成功,則輸入userInfo詳細信息。如果在將詳細信息輸入到userInfo時發生異常,我將刪除loginInfo詳細信息。

這是我現在該怎麼辦

'login details are entered successfully 
If CreateLogin(uName.uPass) Then 
Try 
'Create the user details 
CreateUser('Userdetails) 
Catch ex As Exception 
'if exception occurs then delete the login 
DeleteLogin(uName) 
End Try 
End IF 

有沒有更好的方式來處理這種情況呢?可以使用事務?

在此先感謝。

+0

使用交易。 – 2010-07-21 16:52:53

回答

0

是的,這是交易的最佳場合。否則,如果在調用DeleteLogin之前網絡出現故障或計算機崩潰,您可能只剩下數據庫中的一半數據。

它們很容易使用。如果您使用的是SqlConnection,請查看SqlTRansaction類,或者OleDB,查看OleDbTransaction等。您將在MSDN中找到簡單的示例。

0

讓我們來看看這個從更高的層次......

你是最好的標準化數據庫,並把用戶ID和密碼到同一個表的所有其他用戶的數據。由於一個用戶應該只有一個登錄ID,因此您正在創建兩個表之間不必要的一對一關係。

+0

取決於UserInfo包含的內容。如果只是地址和電話等,可能會有多個用戶使用相同的信息(丈夫和妻子或類似信息)。儘管在這種情況下它應該被稱爲ContactInfo而不是UserInfo。 – 2010-07-21 16:58:11

相關問題