我有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 :(得分:0)
是的,这是交易的最佳场合。否则,如果在调用DeleteLogin
之前网络出现故障或计算机崩溃,您可能只剩下数据库中一半的数据。
它们非常易于使用。如果您正在使用SqlConnection,请查看SqlTRansaction类或OleDB,查看OleDbTransaction等。您可以在MSDN中找到简单的示例。
答案 1 :(得分:0)
让我们从更高的层面看一下......
最好将数据库规范化,并将用户ID和密码与所有其他用户数据放在同一个表中。由于一个用户应只有一个登录ID,因此您在两个表之间创建了不必要的一对一关系。