在访问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();