我正在尝试使用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;
}
提前致谢。
答案 0 :(得分:0)
@@identity
在Access中效果不佳。您必须使用完全相同的连接来检索插入的ID。
快速解决此问题的方法如下:select max(ID) from table1
但是,在多用户环境中,这是不安全。