Как бороться со вставкой значений в две таблицы при возникновении исключения - PullRequest
0 голосов
/ 21 июля 2010

У меня есть 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

Есть ли лучший способ справиться с этой ситуацией?можно использовать транзакции?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 июля 2010

Давайте посмотрим на это с более высокого уровня ...

Вам лучше нормализовать базу данных и поместить ID пользователя и пароль в ту же таблицу, что и все другие пользовательские данные.Поскольку один пользователь должен иметь один и только один идентификатор входа в систему, вы создаете ненужные отношения один к одному между двумя таблицами.

0 голосов
/ 21 июля 2010

Да, это идеальный повод для сделки. В противном случае, если сеть выйдет из строя или ваш компьютер выйдет из строя до вызова DeleteLogin, у вас может остаться только половина данных в вашей базе данных.

Они довольно просты в использовании. Если вы используете SqlConnection, посмотрите на класс SqlTRansaction или, если OleDB, посмотрите на OleDbTransaction и т. Д. Вы найдете простые примеры в MSDN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...