louis vuitton bag moncler jacka ugg boots mbt sko louis vuitton oslo moncler ugg www.steklo1.ru
   Поиск
 

ADO.NET

Работа с базами данных в приложениях .NET

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Точки сохранения в транзакциях SQL Server

При внесении множественных изменений в базу данных SQL Server может возникнуть ситуация, когда предпочтительнее отклонить не всю транзакцию, а только ее
часть. Текущие версии SQL Server не поддерживают вложенные транзакции, однако в
них реализована концепция точек сохранения, с помощью которой можно осуществить подобную функциональность. Точка сохранения — это средство SQL Server, позволяющее производить частичное отклонение транзакции. Другими словами, точка
сохранения представляет собой "закладку", определяемую посредством вызова метода
Save класса SqlTransaction в любом месте транзакции, в которое вы хотели бы
вернуться в случае ее отклонения (без отмены всей транзакции).



// Открытие соединения.
SqlConnection conn = new SqlConnection(
"Server-localhost;" +
"Database=ADQNET;" +
"Integrated Security=true;"};
conn.Open();
// Создание команды.
SqlCoitimand cmd = conn.CreateCornmanci () ;
// Создание транзакции,
cmd.Transaction =
conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
// Попытка добавить в базу данных сведения о новом клиенте.
crad.CommandText = "INSERT INTO Customer " +
"(CustomerlD, LastName, FirstName, Phone, Zip) " +
"VALUES {newidO/ 'Smoltz', 'John'," +
"'503-432-4565', '12345');";
cmd.ExecuteNonQuery();
// Создание точки сохранения.
cmd.Transaction.Save("New Customer");
try
(
// Попытка добавить в базу данных сведения о новом счете.
cmd.CommandText = "INSERT INTO Invoice " +
"(InvoicelD, invoiceNumber, InvoiceDate, Terms) " +
"VALUES (newidi), '123456', '05/01/2001',"+
"'Net 20'};";
cmd.ExecuteNonQuery();
}
catch(Exception)
{
// Отклонить транзакцию то точки сохранения -
// момента внесения в базу данных информации о
// новом клиенте.
cmd.Transaction.Rollback("New Customer");
// Если выполнение было передано этому оператору,
// принять транзакцию.
cnid.Transaction. Commit {} ;
}
catch{Exception ex)
t
cmd.Transaction.Rollback( );
Console.WriteLine("Command failed:" +
"{0}\nTransaction Rolled back", ex.Message);
}



"(InvoicelD, invoiceNumber, InvoiceDate, Terms) " +
"VALUES (newidi), '123456', '05/01/2001',"+
"'Net 20'};";
cmd.ExecuteNonQuery();
}
catch(Exception)
{
// Отклонить транзакцию то точки сохранения -
// момента внесения в базу данных информации о
// новом клиенте.
cmd.Transaction.Rollback("New Customer");
// Если выполнение было передано этому оператору,
// принять транзакцию.
cnid.Transaction. Commit {} ;
}
catch{Exception ex)
t
cmd.Transaction.Rollback( );
Console.WriteLine("Command failed:" +
"{0}\nTransaction Rolled back", ex.Message);
}
В этом коде мы создали точку сохранения с именем "New Customer" (Новый клиент). Если занесение в базу данных информации о новом клиенте прошло успешно,
однако во время создания нового счета произошла ошибка, нам не хотелось бы терять
уже внесенные в базу данных сведения о новом клиенте. Поэтому мы отклоняем
транзакцию вплоть до точки сохранения и затем принимаем ее.

Предыдущая стр.    Оглавление   
Средняя оценка: (1 - 1 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии



Практический обучающий видео-курс "Основы C#"

От профессионального
разработчика для начинающих
и опытных программистов!

Кликните, чтобы изучить
язык C# с нуля и научиться
писать программы под платформу .NET!

evening dresses