如何在两种方法中使用sql.trans
本文关键字:sql trans 方法 两种 | 更新日期: 2023-09-27 17:58:17
我有剪切和粘贴按钮,而剪切时我有一个sql操作,而粘贴时有一个sql操作。如何使用transaction语句。
protected void btnCut_Click(object sender, EventArgs e)
{
hidCutnode.Value = TreeView2.SelectedNode.Value;
string sqlQuery = "update CUSTOMIZEDTREE set parentid='" + 0 + "' where nodeid='" + hidCutnode.Value + "'";
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.69.200.62)(PORT=1521)))(CONNECT_DATA=(SID=orcl)));User Id=apex_demo;Password=apex_demo;";
OracleConnection con = new OracleConnection(connectionString);
con.Open();
tran = con.BeginTransaction();
OracleCommand cmd = new OracleCommand(sqlQuery, con);
cmd.Transaction = tran;
cmd.ExecuteNonQuery();
con.Close();
}
protected void btnPaste_Click(object sender, EventArgs e)
{
hidPastenode.Value = TreeView2.SelectedNode.Value;
try
{
string sqlQuery = "update CUSTOMIZEDTREE set parentid='" + hidPastenode.Value + "' where nodeid='" + hidCutnode.Value + "'";
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.69.200.62)(PORT=1521)))(CONNECT_DATA=(SID=orcl)));User Id=apex_demo;Password=apex_demo;";
OracleConnection con = new OracleConnection(connectionString);
con.Open();
OracleCommand cmd = new OracleCommand(sqlQuery, con);
tran = con.BeginTransaction();
// cmd.Connection = con;
cmd.Transaction = tran;
cmd.ExecuteNonQuery();
tran.Commit();
con.Close();
PopulateCustomTree();
}
catch (Exception ex)
{
tran.Rollback();
ex.ToString();
}
}
将transaction
对象作为函数参数传递给第二个方法,而不是方法1中的commit
。仅在第一种方法中使用BeginTransaction
。
SqlTransaction trn = connect.BeginTransaction();
try
{
SqlCommand command = new SqlCommand(query);
command.Transaction = trn;
command.Connection = connect;
connect.Open();
command.CommandTimeout = 0;
command.ExecuteNonQuery();
trn.Commit();
}
catch (Exception ex)
{
trn.Rollback();
}
connect.Close();