限制数据类型属性冲突-ODBC with Access Database

restricted data type attribute violation - ODBC with Access Database

本文关键字:with Access Database -ODBC 冲突 数据类型 属性      更新时间:2023-10-16

我正在尝试使用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; 
}

提前谢谢。

@@identity在Access中不能很好地工作。您必须使用完全相同的连接来检索插入的ID。

解决这个问题的快速破解方法如下:select max(ID) from table1

但是,这在多用户环境中是不安全的。