Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 发生异常时如何处理将值插入两个表_Database_Vb.net_Insert - Fatal编程技术网

Database 发生异常时如何处理将值插入两个表

Database 发生异常时如何处理将值插入两个表,database,vb.net,insert,Database,Vb.net,Insert,我有两个表loginInfo和UserInfo。LoginInfo存储用户名和密码,而userinfo存储其他用户详细信息,如地址、邮政编码、电话等 我首先将值插入loginInfo,如果成功,我将输入userInfo详细信息。如果在userInfo中输入详细信息时发生异常,我将删除loginInfo详细信息 我现在就是这样做的 'login details are entered successfully If CreateLogin(uName.uPass) Then Try 'Create

我有两个表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
有没有更好的方法来处理这种情况?可以使用事务吗


提前谢谢。

是的,这是交易的最佳时机。否则,如果在调用
DeleteLogin
之前网络中断或计算机崩溃,数据库中可能只剩下一半的数据


它们很容易使用。如果您使用的是SqlConnection,请查看类或OleDB,等等。您可以在MSDN中找到简单的示例。

让我们从更高的层次来看看


最好规范化数据库,并将用户ID和密码与所有其他用户数据放在同一个表中。因为一个用户应该只有一个登录ID,所以您在两个表之间创建了一个不必要的一对一关系。

稍微取决于UserInfo包含的内容。如果只是地址、电话和类似信息,则可能有多个用户具有相同的信息(丈夫和妻子或类似信息)。尽管在这种情况下,它应该被称为ContactInfo,而不是UserInfo。