16.4.3 SQLGetInfo,SQLGetInfoW
(1) 機能
接続に関連づけられているドライバとデータソースの一般的な情報を返します。
(2) 形式
-
SQLGetInfoの場合
SQLRETURN SQLGetInfo ( SQLHDBC ConnectionHandle, /* In */ SQLUSMALLINT InfoType, /* In */ SQLPOINTER InfoValuePtr, /* In/Out */ SQLSMALLINT BufferLength, /* In */ SQLSMALLINT * StringLengthPtr /* Out */ )
-
SQLGetInfoWの場合
SQLRETURN SQLGetInfoW ( SQLHDBC ConnectionHandle, /* In */ SQLUSMALLINT InfoType, /* In */ SQLPOINTER InfoValuePtr, /* In/Out */ SQLSMALLINT BufferLength, /* In */ SQLSMALLINT * StringLengthPtr /* Out */ )
(3) 引数
- ConnectionHandle:
-
接続ハンドルを指定します。
- InfoType:
-
情報型を指定します。
指定できる情報型については,「16.13 SQLGetInfoおよびSQLGetInfoWのInfoTypeに指定できる情報型」を参照してください。
- InfoValuePtr:
-
情報を返すバッファのポインタを指定します。要求されたInfoTypeに応じた情報が返されます。指定できる情報型をInfoTypeに指定した場合でも,その情報型が未サポートのときは,空の文字列や,0が返されることがあります。
- BufferLength:
-
*InfoValuePtrバッファの長さ(単位:バイト長)を指定します。この長さにNULL終端文字は含まれます。SQL_NTSは指定できません。
*InfoValuePtrの値が文字列以外,またはInfoValuePtrがNULLポインタの場合,この引数の指定は無視されます。
InfoValuPtrの値が文字列以外の場合,HADB ODBCドライバはInfoTypeに基づき,*InfoValuePtrのサイズをSQLUSMALLINTまたはSQLUINTEGERと見なします。バッファサイズが不足している場合の動作は保証しません。
- StringLengthPtr:
-
*InfoValuePtrに返す,有効な長さ(単位:バイト長)の合計を返すバッファへのポインタを指定します。この長さにNULL終端文字は含まれません。
- 重要
-
文字データの場合,この長さ(単位:バイト長)がBufferLengthからNULL終端文字分を引いた長さより大きい場合,*InfoValuePtrに格納される文字列はBufferLengthからNULL終端文字分を引いた長さ(単位:バイト長)に切り捨てられ,末尾にNULL終端文字が付加されます。そのほかのデータ型の場合,BufferLengthの値は無視され,ドライバはInfoTypeに基づき,*InfoValuePtrのサイズをSQLUSMALLINTまたはSQLUINTEGERと見なします。
(4) 戻り値
SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,またはSQL_INVALID_HANDLEが返されます。
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
01004 |
文字列データの右側が切り捨てられた |
*InfoValuePtrバッファの大きさが不足しているため,要求されたすべての情報を格納できませんでした(情報が切り捨てられました)。切り捨てられる前の要求情報の長さが,*StringLengthPtrに格納されます。このとき,SQL_SUCCESS_WITH_INFOを返します。 |
○ |
01S51 |
文字コード変換時に置き換えが発生した |
変換できない文字コードを検出し,指定の文字に置き換えました。このとき,SQL_SUCCESS_WITH_INFOを返します。 |
○ |
08003 |
接続が存在しない |
− |
× |
08S01 |
通信リンク失敗 |
× |
|
HY000 |
一般エラー |
× |
|
HY001 |
メモリ割り当てエラー |
× |
|
HY009 |
NULLポインタの不正使用 |
× |
|
HY013 |
メモリ管理エラー |
× |
|
HY024 |
無効な属性値 |
× |
|
HY090 |
無効な文字列長または無効なバッファ長 |
BufferLengthに無効な値(SQL_NTS)が指定されました。 |
○ |
HY096 |
情報型が範囲外である |
InfoTypeに指定された値はサポートしていません。 |
○ |
HY117 |
接続がサスペンド中 |
− |
× |
HYC00 |
オプション機能は実装されていない |
× |
|
HYT01 |
接続タイムアウト終了 |
× |
|
IM001 |
ドライバはこの関数をサポートしていない |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
InfoTypeにSQL_DRIVER_ODBC_VER情報型以外を指定する場合,接続が確立している必要があります。