如何用_CommandPtr Execute得到Insert得到的主键值?
数据库有个表UserInfo, UI_ID是主键,我用语句"insert into userinfo(ui_name, ui_sex) values(N'Lucy', 0) select @@IDENTITY as ui_id"
pCmd->ActiveConnection = m_Connection;
pCmd->CommandText = _bstr_t(strSQL);
_RecordsetPtr rs;
rs = pCmd->Execute(NULL, NULL, adCmdText);
if(rs != NULL)
{
DWORD dwValue = (long)rs->GetCollect(0); //执行之后异常,提示不可操作一个关闭的数据集什么的
rs->Close();
rs.Release();
}
如何才能获取到insert 之后得到自动生成的主键值UI_ID,谢谢!
[解决办法]
你把两个SQL语句连在一起写,程序是不能识别的
先调用insert,再执行select。如果UI_ID是自增的,那么可以用SELECT MAX(UI_ID)来得到它,当然,这只是在没有多人同时写库的情况下可用。如果ui_name+ui_sex是唯一的,可以查询名称和性别是刚insert值的记录的UI_ID