none
SQLDriverConnect()がエラー時のSQLGetDiagRec()の取得内容 RRS feed

  • 質問

  • 皆様お世話になります。

    VisualC++からSQL Serverにアクセスしています。

    サーバーが起動していない等の理由でSQLDriverConnect()がエラーの際に、ウィンドウハンドルを渡している場合はダイアログボックスに

    のようなエラーが表示されますが、このエラーをプログラムで受け取れないでしょうか?

    ウィンドウハンドルを渡さない条件ではSQLGetDiagRec()にて

    SQLState="IM008"
    MessageText="[Microsoft][ODBC SQL Server Driver]ダイアログ ボックスを表示できませんでした。"

    というエラーしか受け取れません。

    よろしくお願いします。

    [編集]
    SQLStateの記入忘れ→追記

    2020年6月7日 20:52

回答

  • SQLDriverConnectの最後の引数に、SQL_DRIVER_NOPROMPTが足りない予感。

    jzkey

    • 回答としてマーク M14Cluster 2020年6月8日 12:57
    2020年6月7日 23:55
  • 以下の URL が参考になるかもしれません。

    C++ SQLDriverConnect API
    https://stackoverflow.com/questions/2018046/c-sqldriverconnect-api
    You should pass the NULL pointer for the hwnd, when calling SQLDriverConnect, if you don't want to allow prompting. Specify SQL_DRIVER_NOPROMPT for the prompt option (as you do). If the call fails, examine the output response code, and print out the messages.

    Here's how you can do the checks:
    • 回答としてマーク M14Cluster 2020年6月8日 12:57
    2020年6月8日 3:04

すべての返信

  • SQLDriverConnectの最後の引数に、SQL_DRIVER_NOPROMPTが足りない予感。

    jzkey

    • 回答としてマーク M14Cluster 2020年6月8日 12:57
    2020年6月7日 23:55
  • 以下の URL が参考になるかもしれません。

    C++ SQLDriverConnect API
    https://stackoverflow.com/questions/2018046/c-sqldriverconnect-api
    You should pass the NULL pointer for the hwnd, when calling SQLDriverConnect, if you don't want to allow prompting. Specify SQL_DRIVER_NOPROMPT for the prompt option (as you do). If the call fails, examine the output response code, and print out the messages.

    Here's how you can do the checks:
    • 回答としてマーク M14Cluster 2020年6月8日 12:57
    2020年6月8日 3:04
  • jzkey様、NOBTA様、ご回答ありがとうございます。

    ご指摘の通りで、SQL_DRIVER_NOPROMPTを指定したところちゃんとエラーを取得できました。

    ありがとうございました。

    2020年6月8日 12:57