Hi,
Is possible to get transaction from opened connection and assign the transaction to command object?
Please see the examples,
That is, In GetReader function in DataHelper class, I need to check if connection is
starts a database transaction or not. If started then i need the assign that transaction to DbCommand object. Like this,
DbCommand cmd = cn.CreateCommand();
if ("cn Transaction is stared")
cmd.Transaction="started transaction";
cmd.CommandText = strQuery;
cmd.CommandType = CommandType.Text;
DbDataReader dbDataReader = cmd.ExecuteReader();
return dbDataReader;
Main Class,
public static class Class1
{
public static bool Update(DbTransaction dt, DbConnection dc)
{
DbCommand cm = dc.CreateCommand();
cm.Connection = dc;
cm.Transaction = dt;
cm.CommandText = "Insert into table1 (id,name) Values (?,?)";
cm.CommandType = CommandType.Text;
DbParameter para1 = cm.CreateParameter();
para1.Direction = ParameterDirection.Input;
para1.Value = "1";
para1.ParameterName = "@id";
cm.Parameters.Add(para1);
DbParameter para2 = cm.CreateParameter();
para2.Direction = ParameterDirection.Input;
para2.Value = "Name";
para2.ParameterName = "@name";
cm.Parameters.Add(para1);
cm.ExecuteNonQuery();
}
public static void GetData(DbTransaction tr, DbConnection cn)
{
string sql = "select id,name from table1 where id=1";
DbDataReader dr;
dr = DataHelper.GetReader(sql, cn);
if (dr.Read())
{
}
}
}
DataHelper class,
public static class DataHelper()
{
public static DbConnection GetConnection()
{
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString =
return connection;
}
public static DbDataReader GetReader(String strQuery, DbConnection cn)
{
try
{
DbCommand cmd = cn.CreateCommand();
cmd.CommandText = strQuery;
cmd.CommandType = CommandType.Text;
DbDataReader dbDataReader = cmd.ExecuteReader();
return dbDataReader;
}
catch (Exception ex)
{
return null;
}
}
}
In Code Behind,
protected void btnSave_OnClick(object sender, EvenArgs e)
{
DbTransaction tr = null;
DbConnection cn = null;
cn=DataHelper.GetConnection();
cn.Open();
tr = cn.BeginTransaction();
Class1.Update(tr,cn);
Class1.GetData(tr,cn);
tr.commit();
}