如何在两种方法中使用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();
        }
}

如何在两种方法中使用sql.trans

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();