c# oracle transaction commit example
Example 1: c# oracle transaction commit example
public int RunOracleTransaction(Student s, Marks[] m, Course[] c) {
using (OracleConnection connection = new OracleConnection(connectionString)) {
connection.Open();
using (OracleCommand command = connection.CreateCommand()) {
using (OracleTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)) {
command.Transaction = transaction;
try {
command.CommandText =
@"insert into Students(name)
values (:prm_Name)
returning id into :prm_id";
command.Parameters.Add(":prm_Name", OracleType.VarChar).Value = s.Name;
command.Parameters.Add(":prm_Id", OracleType.VarChar).Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
string studentId = Convert.ToString(comm.Parameters[":prm_Id"].Value);
command.Parameters.Clear();
command.CommandText =
@"insert into StudentsMarks(student_Id, mark)
values (:prm_Student_Id, :prm_Mark)";
command.Parameters.Add(":prm_Student_Id", OracleType.VarChar).Value = studentId;
command.Parameters.Add(":prm_Mark", OracleType.Int32);
foreach (var mark in m) {
command.Parameters[":prm_Mark"].Value = m.Mark;
command.ExecuteNonQuery();
}
transaction.Commit();
}
catch (DataException e) {
transaction.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
}
}
}
}
Example 2: .net core executenonqueryasync Oracle transaction
public void RunOracleTransaction(string connectionString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = connection.CreateCommand();
OracleTransaction transaction;
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
command.Transaction = transaction;
try
{
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
command.ExecuteNonQuery();
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception e)
{
transaction.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
}
}