2010-07-21 45 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

相关问题