如何使用C#和Sybase进行事务

时间:2018-02-23 20:48:28

标签: c# transactions odbc sybase

在访问SQL Server时,我使用VB和C#在.net中完成了大量的事务处理。但是,在将Sybase与odbc一起使用时,我无法使事务处理工作。

我找到了我需要的地方" SET CHAINED OFF",我已经这样做了,但无论从C#调用我的插入程序后它已经完成了提交。

我想在我的C#中执行插入PROC,回到我的代码,做一些其他处理,然后提交或回滚。

有没有人有一个例子,在一个事务中对Sybase进行多次调用,然后回滚或提交?

这是一个例子......

        sbConnection = new OdbcConnection(StrConnectionString);
        sbCommand = new OdbcCommand();

        sbCommand.Connection = sbConnection;
        sbConnection.Open();
        sbTransaction = sbConnection.BeginTransaction();


        sbCommand.Connection = sbConnection;
        sbCommand.Transaction = sbTransaction; ;

        sbCommand.CommandText = "SET CHAINED OFF";
        sbCommand.ExecuteNonQuery();

        //sbCommand.Transaction = sbTransaction;
        sbCommand.CommandType = CommandType.StoredProcedure;
        sbCommand.CommandText = "{call myInsertProc (?, ?, ?, ?)}";
        sbCommand.Parameters.Clear();

        sbCommand.Parameters.Add("@col1", OdbcType.VarChar).Value = field1;
        sbCommand.Parameters.Add("@col2", OdbcType.BigInt, 14).Value = Convert.ToInt64(field2);
        sbCommand.Parameters.Add("@col3", OdbcType.BigInt, 14).Value = Convert.ToInt64(field3);
        sbCommand.Parameters.Add("@col4", OdbcType.VarChar).Value = textData;

        sbCommand.ExecuteNonQuery();

        // these two statements are for testing only.  The rollback is not working, its still getting committed.
        sbTransaction.Rollback();
        sbConnection.Close();

0 个答案:

没有答案