ADO中使用事务的问题
程序原来是使用ODBC的,运行正常,现在改用ADO就出问题了。程序大约如下:
CADORecordset rs(&db);
if ( !db.BeginTrans() )
AfxMessageBox("事务启动失败");
try
{
rs.Open(...);
while(!rs.IsEOF()){
switch( .... )
{
case '1':
execone(s);
rs.PutCollect(....);
rs.Update();
..........
}
rs.MoveNext();
}
rs.Close();
}
catch(_com_error e)
{
....
flag = false;
}
if (!flag ) {
if ( !db.Rollback() )
AfxMessageBox("回滚失败");
else return ;
}
else{
if ( !db.CommitTrans() ){
AfxMessageBox("提交失败");
return ;
}
}
BOOL execone(CString reportid)
{
CADORecordset rs(&db),rs1(&db);
s2.Format("delete from tablename ");
db.ExecuteSQL(s2);
rs.Open(......);
while ( !rs.IsEOF()){
rs1.Open(....);
while(!rs1.IsEOF()){
db.ExecuteSQL("insert tablename1 (field_1,field_2 .......");
}
rs1.MoveNext();
}
rs1.Close();
rs.MoveNext();
}
rs.Close();
return true;
}
db是我已经打开的全局数据库连接。CADORecordset是我的封装类。程序原来在ODBC中运行正常。现在一执行db.ExecuteSQL("insert tablename1 (field_1,field_2 .......");
就出错,提示是《未指定错误》。如果不要事务。整个程序就能正常运行。结果也对。数据库是sql server 2000