/
aprogrammer
/
dotnet-docs
Обзор
Документация
Войти
/
aprogrammer
/
dotnet-docs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
samples/snippets/standard/data/sqlite/DeferredTransactionSample/Program.cs
63 строки
2 KB
Nick Schonning
fix: various typos in code samples (#31546)
04 апр 2023, 23:19
Не верифицирован
04 апр 2023, 23:19
5aa042b
Код
Авторство
О чём код?
using System.IO; using Microsoft.Data.Sqlite; namespace DeferredTransactionSample { class Program { static void Main() { var connection = new SqliteConnection("Data Source=DeferredTransactionSample.db"); connection.Open(); var createCommand = connection.CreateCommand(); createCommand.CommandText = @" CREATE TABLE data ( value INTEGER ); INSERT INTO data VALUES (1); "; createCommand.ExecuteNonQuery(); #region snippet_DeferredTransaction using (var transaction = connection.BeginTransaction(deferred: true)) { // Before the first statement of the transaction is executed, both concurrent // reads and writes are allowed var readCommand = connection.CreateCommand(); readCommand.CommandText = @" SELECT * FROM data "; var value = (long)readCommand.ExecuteScalar(); // After a the first read statement, concurrent writes are blocked until the // transaction completes. Concurrent reads are still allowed var writeCommand = connection.CreateCommand(); writeCommand.CommandText = @" UPDATE data SET value = $newValue "; writeCommand.Parameters.AddWithValue("$newValue", value + 1L); writeCommand.ExecuteNonQuery(); // After the first write statement, both concurrent reads and writes are blocked // until the transaction completes transaction.Commit(); } #endregion // Clean up connection.Close(); File.Delete("DeferredTransactionSample.db"); } } }