gpt4 book ai didi

c++ - SQLGetDiagRec 导致 Unicode 发布版本崩溃

转载 作者:行者123 更新时间:2023-11-30 04:40:44 25 4
gpt4 key购买 nike

我在调用 SQLGetDiagRec 时遇到问题。它在 ascii 模式下工作正常,但在 unicode 模式下它会导致我们的应用程序崩溃,我只是不明白为什么。我能找到的所有文档似乎都表明它应该在内部处理 ascii/unicode 开关。我使用的代码是:

void clImportODBCFileTask::get_sqlErrorInfo( const SQLSMALLINT _htype, const SQLHANDLE _hndle )
{
SQLTCHAR SqlState[6];
SQLTCHAR Msg[SQL_MAX_MESSAGE_LENGTH];
SQLINTEGER NativeError;
SQLSMALLINT i, MsgLen;
SQLRETURN nRet;

memset ( SqlState, 0, sizeof(SqlState) );
memset ( Msg, 0, sizeof(Msg) );

// Get the status records.
i = 1;

//JC - 2009/01/16 - Start fix for bug #26878
m_oszerrorInfo.Empty();

nRet = SQLGetDiagRec(_htype, _hndle, i, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen);
m_oszerrorInfo = Msg;
}

一切正常,直到此函数尝试返回,然后应用程序崩溃。在调用 get_sqlErrorInfo 之后,它永远不会回到代码行。

我知道这就是问题所在,因为我已将诊断代码放入其中,并且它顺利通过了 SQLGetDiagRec,并完成了此功能。

如果我评论 SQLGetDiagRec 行,它工作正常。

无论是否运行发布或调试,它在我的开发箱上始终运行良好。

如果您对此问题有任何帮助,我们将不胜感激。谢谢

最佳答案

嗯,我找到了正确的答案,所以我想我会把它放在这里以供将来引用。我看到的文档是错误的。 SQLGetDiagRec 不处理 Unicode,我需要使用 SQLGetDiagRecW。

关于c++ - SQLGetDiagRec 导致 Unicode 发布版本崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com