首页新闻找找看学习计划

c++ado的问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-07-17 14:12

我现在有一个表A

字段:  id int IDENTITY(1,1)

name varchar(50)

我写了一个sql语句执行插入操作

"Insert into [" + mod.m_cTableName + "](" + ShortFields + ") values (?);"

name值是通过参数传入的

sqlAdo.AddParamter(_T("@Name"), adParamInput, adVarChar, 50, _variant_t(mod.m_sName));

执行是

sqlAdo.ExecuteNonQuery(adCmdText, sql.c_str());

怎么获取到它自增长的id呢?

问题补充:

我在insert后面添加了一句

SELECT SCOPE_IDENTITY()

但是在recordset指针里获取不到,总是报错:错误指针

Tony.wang的主页 Tony.wang | 菜鸟二级 | 园豆:220
提问于:2012-07-17 12:12
< >
分享
最佳答案
0

我*。。。知道原因了,这里执行了2个sql语句,所以,其实返回的结果集应该是2个,不像ado.net里面直接可以select到值

正确的作法是:

将recordset指针移动到下一个结果集

sqlAdo.NextRecordset(a);

然后再获取id值

sqlAdo.GetFieldValue(_T("outid"), mod.m_nId);

这样就可以了

Tony.wang | 菜鸟二级 |园豆:220 | 2012-07-17 14:10
其他回答(1)
1

SQL语句最后加上SELECT @@identity,返回第一行第一列

收获园豆:20
56180825 | 园豆:1154 (小虾三级) | 2012-07-17 12:34

我用的是select SCOPE_IDENTITY();但是返回之后取不到值,总是会报一个错误指针的error

支持(0) 反对(0) Tony.wang | 园豆:220 (菜鸟二级) | 2012-07-17 14:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册