簡體   English   中英

C ++ SQLGetDiagRec返回地址

[英]c++ SQLGetDiagRec returns addresses

我正在編寫函數來調用Oracle中的存儲過程。 嘗試調用SQLConnectA時,它將失敗,並且SQLGetDiagRec返回一些奇怪的數字,看起來像是內存地址而不是診斷消息。 產生此錯誤的代碼是

    ret = SQLConnectA(hORAdbc, (SQLCHAR*)DCDSN.c_str(), DCDSN.length(), (SQLCHAR*)DCUSR.c_str(), DCUSR.length(), (SQLCHAR*)DCPWD.c_str(), DCPWD.length());
if (ret != SQL_SUCCESS) {

    rc = SQLGetDiagRec(SQL_HANDLE_DBC, hORAdbc, 1, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen);
    appfile << "MAIN:SQLConnectA hORAdbc> SQLSTATE: " << SqlState << " NativeError: " << NativeError << " Msg: " << Msg << endl;

    return 0;
}

注意:appfile是ofstream對象(用於記錄的文本文件)

這種行為的原因在哪里?

Msg返回chars的指針數組,因此,如果直接輸出它,則只寫該數組第一個字符的地址。

一種解決方案是先將其轉換為std :: string,然后再將其流式傳輸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM