微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 C++ 应用程序中发出从 Microsoft SQL 服务器数据库中的 BIGINT 列读取插入值的问题

如何解决从 C++ 应用程序中发出从 Microsoft SQL 服务器数据库中的 BIGINT 列读取插入值的问题

我试图从我从 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 举报,一经查实,本站将立刻删除。