请问各位高手,我的程序是console建立,suport by MFC,现在出现以下问题,请指教

Rockeyq 2004-07-29 04:15:30
这段程序在第一便循环时没出错,在第二次循环是到rs3.Open(CRecordset::snapshot,sqlstr);时出错,执行不下去了,是写法不正确吗,还是有其他的方法。谢谢,各位指点!!

for(i=0;i<fullNo;i++)//fullNo完整文件名个数
{
strcpy(tmpVolume,cutStr(szFname[i],'.',1));
strcpy(tmpSubvol,cutStr(szFname[i],'.',2));
strcpy(tmpFilename,cutStr(szFname[i],'.',3));
wsprintf(sqlstr,"select * from ENSCRIBE_FILE where ENSC_VOLUME='%s' and ENSC_SUBVOL='%s' and ENSC_FILENAME='%s' and ENSC_FLAG='1' and ENSC_REGISTER=0",tmpVolume,tmpSubvol,tmpFilename);
rs3.Open(CRecordset::snapshot,sqlstr);
if(!rs3.IsEOF( ))
{
wsprintf(sqlstr,"UPDATE ENSCRIBE_FILE set ENSC_REGISTER=1 where ENSC_VOLUME='%s' and ENSC_SUBVOL='%s' and ENSC_FILENAME='%s' and ENSC_FLAG='1' and ENSC_REGISTER=0",tmpVolume,tmpSubvol,tmpFilename);
try
{
G_db_update.ExecuteSQL(sqlstr);
}
catch(CDBException* e)
{
Write_log("执行数据库操作失败","1166",sqlstr);
e->Delete();
G_db_update.ExecuteSQL("ROLLBACK TRANSACTION");
strcpy(receive_data[index].errorMsg,"05");
return FALSE;
}
rs3.GetFieldValue("ENSC_CHANGE_MODE",varValue);
strcpy(szDmode,varValue.m_pstring[0]);
varValue.Clear();


rs3.Close();
}
}// for(i=0;i<fullNo;i++)
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rockeyq 2004-07-29
  • 打赏
  • 举报
回复
不用转义的,这句是对的,第一遍是可以执行的
Kudeet 2004-07-29
  • 打赏
  • 举报
回复
wsprintf(sqlstr,"UPDATE ENSCRIBE_FILE set ENSC_REGISTER=1 where ENSC_VOLUME=\'%s\' and ENSC_SUBVOL=\'%s\' and ENSC_FILENAME=\'%s\' and ENSC_FLAG='1' and ENSC_REGISTER=0",tmpVolume,tmpSubvol,tmpFilename);
Rockeyq 2004-07-29
  • 打赏
  • 举报
回复
加了,还不行啊,我发现是我update 的有问题,我把那段屏蔽掉就不会有问题。
Kudeet 2004-07-29
  • 打赏
  • 举报
回复
在if(!rs3.IsEOF( ))的外面再加一个rs3.Close();
快乐鹦鹉 2004-07-29
  • 打赏
  • 举报
回复
rs3.Close();应该放到if(!rs3.IsEOF( ))外边。而不应该放到里边。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧