Click here to Skip to main content
15,886,093 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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,

C#
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,

C#
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())
		{
			//something
		}

	}
}


DataHelper class,
C#
public static class DataHelper()
{
    public static DbConnection GetConnection()
	{

		OleDbConnection connection = new OleDbConnection();
		connection.ConnectionString = //connection string ;
		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,

C#
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();
}
Posted
Comments
P.T.R.K 19-Dec-12 7:05am    
I dont use overload method like GetReader(String strQuery, DbConnection cn, DbTransaction tr) to resolve this question.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900