When to call BeginTrans
Mahesh Apte -- mahesha@surya.trddc.ernet.in
Wednesday, December 11, 1996
Environment : VC++ 1.51 Windows 95
Hi there,
For providing a transaction cycle, CDatabase provides functions viz.
BeginTrans,
CommitTrans and RollBack. For using these functions, help says that U
should open all the recordsets that U will be using for transaction before
BeginTrans. In our project, we have largeno of tables. So opening all the
recordsets is not feasible. Also we are using a database IO layer which
does the actual db operation and we are doing BeginTrans at the task layer.
Ideally we want to do BeginTrans first , then call n function calls of IO
layer which internally open it's recordset , do the transaction and close
it. Then call CommitTrans or RollBack based on the return value of those
functions. We tried it out and it worked. But help gives warning. So it may
hit us anytime. So can anybody suggest some solution??
Help will be highly appreciated.
Maha
wei@cmgroup.com
Friday, December 13, 1996
> Hi there,
> For providing a transaction cycle, CDatabase provides functions viz.
> BeginTrans,
> CommitTrans and RollBack. For using these functions, help says that U
> should open all the recordsets that U will be using for transaction before
> BeginTrans. In our project, we have largeno of tables. So opening all the
> recordsets is not feasible. Also we are using a database IO layer which
> does the actual db operation and we are doing BeginTrans at the task layer.
> Ideally we want to do BeginTrans first , then call n function calls of IO
> layer which internally open it's recordset , do the transaction and close
> it. Then call CommitTrans or RollBack based on the return value of those
> functions. We tried it out and it worked. But help gives warning. So it may
> hit us anytime. So can anybody suggest some solution??
Ya. You can do it. The solution is just only make one CDatabase object
and pass a pointer of it to any CRecordset derived objects. And also
any your direct SQL statement excution through this unique CDatabase object.
You can Commit or RollBack any operation since last BeginTrans call.
You can put this CDatabase object pointer inside you CMainFrame class.
Then you easy access to it.
Hope this help.
Wei Sheng
Mahesh Apte -- mahesha@surya.trddc.ernet.in
Tuesday, December 17, 1996
[Mini-digest: 2 responses]
Thanx Wei ,
Well we are already doing that. We have only one instance of CDatabase class.
we are using it for all the recordsets. So do U mean that what we are doing will
serve the purpose??
Regards
Maha
----------
From: wei@cmgroup.com[SMTP:wei@cmgroup.com]
Sent: Saturday, December 14, 1996 5:25 AM
To: mfc-l@netcom.com
Subject: Re: When to call BeginTrans
> Hi there,
> For providing a transaction cycle, CDatabase provides functions viz.
> BeginTrans,
> CommitTrans and RollBack. For using these functions, help says that U
> should open all the recordsets that U will be using for transaction before
> BeginTrans. In our project, we have largeno of tables. So opening all the
> recordsets is not feasible. Also we are using a database IO layer which
> does the actual db operation and we are doing BeginTrans at the task layer.
> Ideally we want to do BeginTrans first , then call n function calls of IO
> layer which internally open it's recordset , do the transaction and close
> it. Then call CommitTrans or RollBack based on the return value of those
> functions. We tried it out and it worked. But help gives warning. So it may
> hit us anytime. So can anybody suggest some solution??
Ya. You can do it. The solution is just only make one CDatabase object
and pass a pointer of it to any CRecordset derived objects. And also
any your direct SQL statement excution through this unique CDatabase object.
You can Commit or RollBack any operation since last BeginTrans call.
You can put this CDatabase object pointer inside you CMainFrame class.
Then you easy access to it.
Hope this help.
Wei Sheng
-----From: djs@sandyhook.com (David J. Straley)
Simply remember that each connection to the DB has its own
committ/rollback behavior. So, then, if you have multiple DB
connections, you can open Recordsets on those individual connections
and have their commits & rollbacks dictated-to by the status of your
commits & rollbacks on the respective DB connections.
Regards,
---------------------------------
David J. Straley * djs@sandyhook.com
Sandy Hook Software Corp. * http://www.sandyhook.com
-- Software Development Outsourcing Services --
| Вернуться в корень Архива
|