- PR -

VisualStdioからトランザクションの制御を行う方法について

1
投稿者投稿内容
たくぽん
会議室デビュー日: 2006/10/18
投稿数: 10
投稿日時: 2006-11-09 13:55
こんにちは
VC6.0からSybseのDatabaseに対してトランザクションを開始し
ロールバック、コミットを判断しようとしましたがどうにもうまくいきません。
症状は、m_db.BeginTrans( )のところでトランザクションが開始できていないようです。  下にソースをつけておきますので参考にしてください。

ProcedureでBEGIN TRANSACTIONだけを行うこともやってみましたが
うまくいきません。VCにてトランザクションの開始コミット、ロールバックを行うことはできないのでしょうか?

環境は、VC++6.0 日本語
    AdaptiveServerAnywhere ver9.0.2です。

ご存知の方おられたらご教授ください。
よろしくお願いします。


 CDatabase m_db;

 BOOL bRet = FALSE;
 m_db.BeginTrans( );  // Begin transaction

 bRet = ExecuteProc(strCommand); //ExecuteSQLを使用してProcedureの実行する関数
 if(!bRet)
 {
  m_db.Rollback( ); // Rollback transaction
  return FALSE;
 }
 m_db.CommitTrans( ); // Commit transaction
 return TRUE;
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-11-09 14:20
「どうもうまくいきません」「できていないようです」とのことですが、具体的には
何がうまくいかないのでしょうか。
たくぽん
会議室デビュー日: 2006/10/18
投稿数: 10
投稿日時: 2006-11-10 13:54
返答遅くなりすみませんでした。
なぜかログインできなくなってました。

なにが出来なかったのかといいますと
m_db.BeginTrans( ); でトランザクションを開始することや
m_db.Rollback( );  でロールバックすることができませんでした。

色々調べた結果
結論は、SybaseやSQLServerではAutoCommitされてしまうため
MFCを使用するとRollbackが出来ないということでした。

ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)