受限数据类型属性冲突 - 带有 Access 数据库的 ODBC
Posted
技术标签:
【中文标题】受限数据类型属性冲突 - 带有 Access 数据库的 ODBC【英文标题】:restricted data type attribute violation - ODBC with Access Database 【发布时间】:2012-07-30 16:24:45 【问题描述】:我正在尝试使用 MFC 将数据添加到我的 Access 数据库中。 我有两个表,在第一个表中添加一条记录后,我检索 id 并更新第二个表。第一次通过时一切正常。但是对于第二条记录表 1 rs.Update() 会引发异常 - 受限数据类型属性违规。我对两条记录使用相同的数据。表 1 的 ID 是自动生成的。
function AddData()
rs.Open(CRecordset::snapshot, _T("SELECT * FROM Table1"));
for ( each of the objects )
db.BeginTrans();
rs.AddNew(); // Parent table
m_xx = xx;
.......
.....
rs.Update();
db.CommitTrans();
id = GetParentId(); // Get Id of added record
// Update the second table with id.
UpdateSecondTable ( id ) ;
rs.close();
int GetParentId()
rs.Open(CRecordset::forwardOnly, _T("SELECT @@Identity FROM Table1"));
int id = rs.GetFieldValue();
return id;
提前致谢。
【问题讨论】:
【参考方案1】:@@identity
在 Access 中不能很好地工作。您必须使用完全相同的连接来检索插入的 ID。
解决此问题的快速方法如下所示:select max(ID) from table1
但是,这在多用户环境中不安全。
【讨论】:
“您必须使用完全相同的连接来检索插入的 ID。” - 对于大多数数据库管理器来说都是如此,而不仅仅是 Access。以上是关于受限数据类型属性冲突 - 带有 Access 数据库的 ODBC的主要内容,如果未能解决你的问题,请参考以下文章
带有 NSManagedObject 的 EXC_BAD_ACCESS
无法引用属性或方法/类型不匹配 Microsoft Access