OdbcTransaction.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // System.Data.Odbc.OdbcTransaction
  3. //
  4. // Authors:
  5. // Brian Ritchie ([email protected])
  6. //
  7. // Copyright (C) Brian Ritchie, 2002
  8. //
  9. using System;
  10. using System.Data;
  11. namespace System.Data.Odbc
  12. {
  13. /// <summary>
  14. /// Summary description for OdbcTransaction.
  15. /// </summary>
  16. public class OdbcTransaction : MarshalByRefObject
  17. {
  18. private OdbcConnection connection;
  19. private IsolationLevel isolationlevel;
  20. internal OdbcTransaction(OdbcConnection conn, IsolationLevel isolationlevel)
  21. {
  22. // Set Auto-commit (102) to false
  23. OdbcReturn ret=libodbc.SQLSetConnectAttr(conn.hDbc, 102, 0, 0);
  24. libodbchelper.DisplayError("SQLSetConnectAttr(NoAutoCommit)", ret);
  25. // TODO: Handle isolation level
  26. this.isolationlevel=isolationlevel;
  27. connection=conn;
  28. }
  29. public void Commit()
  30. {
  31. if (connection.transaction==this)
  32. {
  33. OdbcReturn ret=libodbc.SQLEndTran((short) OdbcHandleType.Dbc, connection.hDbc, 0);
  34. libodbchelper.DisplayError("SQLEndTran(commit)", ret);
  35. connection.transaction=null;
  36. }
  37. else
  38. throw new InvalidOperationException();
  39. }
  40. public void Rollback()
  41. {
  42. if (connection.transaction==this)
  43. {
  44. OdbcReturn ret=libodbc.SQLEndTran((short) OdbcHandleType.Dbc, connection.hDbc, 1);
  45. libodbchelper.DisplayError("SQLEndTran(rollback)", ret);
  46. connection.transaction=null;
  47. }
  48. else
  49. throw new InvalidOperationException();
  50. }
  51. }
  52. }