【发布时间】:2011-05-01 12:24:44
【问题描述】:
在使用 Qt4 制作的注册软件中,我打开一个 Access .mdb 数据库,使用用户提供的字段对其进行更新。
它目前有一个表clients,有六个字段:
CustomerNumber, FullName, CNICNumber, ResidentialAddress, ResidentialPhoneNumber, MobileNumber
其中CustomerNumber 是主键和数字,而所有其他都是文本。目前有一些记录。但是当尝试插入另一条具有相同CustomerNumber的记录时,出现错误:
QODBCResult::exec: 无法执行 声明:“[微软][ODBC微软 访问驱动程序] 你的改变 要求表没有 成功,因为他们会创造 索引中的重复值,主要 键或关系。更改数据 在一个或多个包含 重复数据,删除索引,或 重新定义索引以允许重复 条目并重试。”
"[Microsoft][ODBC Microsoft Access 驱动程序]您请求的更改 该表不成功,因为 他们会在 索引、主键或 关系。更改数据中的 包含重复的字段或字段 数据,删除索引,或重新定义 允许重复条目的索引 然后再试一次。” “QODBC3:无法 执行语句”
然后我找到了UPDATE 查询,但是下面的代码给出了另一个错误:
query.exec("UPDATE clients"
"SET FullName='"+cname+"', CNICNumber='"+cnic+"', ResidentialAddress='"+caddress+"', ResidentialPhoneNumber='"+cphone+"', MobileNumber='"+cmobile+"'"
"WHERE CustomerNumber="+cnumber+";");
变量cname, cninc, caddresss, cphone, cmobile, cnumber 是带有值的字符串。但是上面代码的错误是:
QODBCResult::exec: 无法执行 声明:“[Microsoft][ODBC 驱动程序 管理器] 功能序列错误" "[Microsoft][ODBC 驱动程序管理器] 函数序列错误” “QODBC3: 无法执行语句”
解决方法是什么,即当主键不存在时如何插入新记录,但用相同的主键更新现有记录?
【问题讨论】: