您的位置:首页 > 其它

CRecordSet 的奇怪现象

2006-03-22 20:58 155 查看
  最近在维护一个较早的 C++ 项目时,发现在调用 CRecordSet 类的 Update() 方法时,居然会出现错误。跟踪进去发现在构造 SQL 语句时,AppendNameValues 生成的查询条件字符串变成了类似 "Field_XXX = ?" 的情况,非常奇怪。细究之下,如果是在 AddNew() 之后的 Update() 方法可以构造出正确的 SQL 语句。但是 Edit() 之后的 Update() 方法就会出现错误,实是有些莫名其妙。

  无可奈何之下,只好不再使用 Update() 方法,改为手工构造 SQL 语句,再调用 CDatabase 的 ExecuteSQL 方法,算是暂时绕开了这个问题。

  后来有同事发现,在调用 CRecordSet.Open 方法的时候,将 nOpenType 参数设定为 CRecordSet::dynaset 就可以解决这个问题,查看了一下源码,发现起先确实是用这个参数打开的,后来不知道何故被换成了 CRecordSet::snapshot,改动的地方没有注释。但是总体上还是有些不太明白,为何它只影响 UPDATE 的 SQL 语句呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: