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