/
aprogrammer
/
dotnet-docs
Обзор
Документация
Войти
/
aprogrammer
/
dotnet-docs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
samples/snippets/standard/data/sqlite/DirtyReadSample/Program.cs
62 строки
2 KB
Genevieve Warren
SFI: More ROPC work (#42687)
24 сен 2024, 18:12
Не верифицирован
24 сен 2024, 18:12
069fe34
Код
Авторство
О чём код?
using System; using System.Data; using Microsoft.Data.Sqlite; namespace DirtyReadSample { class Program { static void Main() { // The connections must use a shared cache const string connectionString = "..."; var firstConnection = new SqliteConnection(connectionString); firstConnection.Open(); var secondConnection = new SqliteConnection(connectionString); secondConnection.Open(); var createCommand = firstConnection.CreateCommand(); createCommand.CommandText = @" CREATE TABLE data ( value TEXT ); INSERT INTO data VALUES ('clean'); "; createCommand.ExecuteNonQuery(); #region snippet_DirtyRead using (var firstTransaction = firstConnection.BeginTransaction()) { var updateCommand = firstConnection.CreateCommand(); updateCommand.CommandText = @" UPDATE data SET value = 'dirty' "; updateCommand.ExecuteNonQuery(); // Without ReadUncommitted, the command will time out since the table is locked // while the transaction on the first connection is active using (secondConnection.BeginTransaction(IsolationLevel.ReadUncommitted)) { var queryCommand = secondConnection.CreateCommand(); queryCommand.CommandText = @" SELECT * FROM data "; var value = (string)queryCommand.ExecuteScalar(); Console.WriteLine($"Value: {value}"); } firstTransaction.Rollback(); } #endregion } } }