Commit(String)
Метод подтверждает текущую транзакцию до указанной точки сохранения. Все установленные точки сохранения до указанной точки удаляются, последующие – сохраняются. Выполнение транзакции продолжается.
Примечание
Данный метод может использоваться в клиентских приложениях, ориентированных исключительно на работу с СУБД ЛИНТЕР.
Синтаксис
public void Commit(string savePointName);
savePointName
– имя точки сохранения.
Возвращаемое значение
Значение типа void.
Исключения
InvalidOperationException | Транзакция уже завершена (подтверждена/отменена/соединение закрыто). | |
ArgumentNullException | Параметр savePointName имеет null-значение. | |
ArgumentException | Параметр savePointName равен пустой строке или ссылается на несуществующую точку сохранения. | |
LinterSqlException | Код завершения СУБД ЛИНТЕР не равен 0 . |
Пример
// C# using System; using System.Data; using System.Data.LinterClient; class CommitSample { static void Main() { // Соединение с БД LinterDbConnection con = new LinterDbConnection(); con.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8"; con.Open(); // Создание объекта LinterDbCommand, связанного с установленным соединением LinterDbCommand cmd = con.CreateCommand(); // Создаем тестовую таблицу cmd.CommandText = "create or replace table test (abc varchar(255))"; cmd.ExecuteNonQuery(); // Начинаем транзакцию в режиме Exclusive LinterDbTransaction txn = con.BeginTransaction(IsolationLevel.ReadCommitted); cmd.Transaction = txn; // Делаем первый insert в тестовую таблицу cmd.CommandText = "insert into test (abc) values ('запись 1')"; cmd.ExecuteNonQuery(); // Создаем точку сохранения SP1 txn.Save("SP1"); // Делаем второй insert в тестовую таблицу cmd.CommandText = "insert into test (abc) values ('запись 2')"; cmd.ExecuteNonQuery(); // Создаем точку сохранения SP2 txn.Save("SP2"); // Делаем третий insert в тестовую таблицу cmd.CommandText = "insert into test (abc) values ('запись 3')"; cmd.ExecuteNonQuery(); // Выполняем метод Commit (SP1) txn.Commit("SP1"); // Выполняем метод RollBack() для всей транзакции txn.Rollback(); // Читаем записи из test cmd.CommandText = "select abc from test"; LinterDbDataReader reader = cmd.ExecuteReader(); // Должна быть только одна первая запись while (reader.Read()) { Console.WriteLine(reader.GetValue(0)); } txn.Dispose(); cmd.Dispose(); con.Close(); con.Dispose(); } } Результат выполнения примера: запись 1