public void RunSQLiteTransaction(string myConnString)
{
SQLiteConnection sqConnection = new SQLiteConnection(myConnString);
sqConnection.Open();
SQLiteCommand sqCommand = new SQLiteCommand();
sqCommand.Connection = sqConnection;
SQLiteTransaction myTrans;
// Start a local transaction
myTrans = sqConnection.BeginTransaction(IsolationLevel.Serializable);
// Assign transaction object for a pending local transaction
sqCommand.Transaction = myTrans;
try
{
sqCommand.CommandText = "INSERT INTO Dept(DeptNo, DName) Values(50, 'DEVELOPMENT')";
sqCommand.ExecuteNonQuery();
sqCommand.CommandText = "INSERT INTO Dept(DeptNo, DName) Values(60, 'PRODUCTION')";
sqCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
finally
{
sqConnection.Close();
}
}