问题描述
我试图从我从 C++ 应用程序执行的查询中获取 BIGINT 列中插入的 ID,目标数据库是 Microsoft sql 服务器,当我尝试获取输出 ID 值时,我得到的只是一个奇怪的值( 2714419332062) 并且在检查数据库时插入的值为“1”、“2”...等。
sqlHANDLE sqlStmtHandle = ReadFromDB(L"INSERT INTO [MyTable] ([Value])
OUTPUT INSERTED.[ID]
VALUES('TEST')");
sqlBIGINT insertID;
sqlLEN lenInsertID = 0;
sqlRETURN returnData;
sqlBindCol(sqlStmtHandle,1,sql_C_LONG,&insertID,2,&lenInsertID);
returnData = sqlFetch(sqlStmtHandle);
if (returnData == sql_SUCCESS || returnData == sql_SUCCESS_WITH_INFO)
do
{
cout << insertID << endl;
} while (sqlFetch(sqlStmtHandle) != sql_NO_DATA);
sqlFreeHandle(sql_HANDLE_STMT,sqlStmtHandle);
sql 中的架构是:
CREATE TABLE [MyTable] (
[ID] BIGINT NOT NULL IDENTITY(1,1),[Value] VARCHAR(512) NOT NULL)
GO
作为旁注,如果列 ID 为 INT 并且我使用 sqlINTEGER 作为 insertID,则此代码有效。 另外,如果代码中有任何小错误(这是原始代码的非常简化版本)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)