ODBC

目次

ODBCとは

ODBC (Open Database Connectivity) は、リレーショナル・データベース・マネージメント・システム (RDBMS) にアクセスするための共通インタフェースです。

呼び出しレベル・インタフェース (Call Level Interface: CLI) が統一されていることにより、アプリケーションが呼び出すAPIの仕様が、複数の異なるRDBMS間で統一されています。

ODBCプログラミング入門

ハンドルの割り付け

ODBCアプリケーションでは、データベース接続やSQL文などの基本的な機能をハンドルを使用して定義し、一連のリソースを管理します。

次のODBC関数を呼び出すことにより、ハンドルを割り当てることができます。

ODBCバージョン3より前のバージョンでは、SQLAllocEnv関数やSQLAllocConnect関数、SQLAllocStmt関数のように、割り付けるハンドルの種類ごとに関数が分かれていましたが、ODBCバージョン3からSQLAllocHandle関数に統一されました。

環境ハンドルおよび接続ハンドルを割り当てる例を次に示します。

SQLHENV henv;
SQLHDBC hdbc;
SQLRETURN rc;

rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) {
  rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
  if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) {
    ...
  }
  SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);

データ・ソースへの接続

アプリケーションは、環境ハンドルと接続ハンドルを割り付けてからデータ・ソースに接続します。接続には、次の3種類のいずれかのODBC関数を使用します。

SQLConnect関数は最も簡単な接続関数で、データ・ソース名 (DSN)とユーザー名、パスワードを指定して、データ・ソースに接続します。

SQLDriverConnect関数は、接続文字列を指定してデータ・ソースに接続します。接続文字列には、データ・ソース名やユーザー名、パスワードだけでなく、様々な属性を指定することができます。ただし、プラットフォームに依存するため、汎用性が無くなることがあります。

データ・ソースとの接続を確立した後、SQLSetConnectOption関数を使用して、接続オプションを指定することができます。

SQL文の実行

ODBCには、SQL文を実行するために2つの方法が用意されています。

直接実行する場合、SQLExecDirect関数でSQL文を直接実行します。

準備後に実行する場合、あらかじめSQLPrepare関数でSQL文を準備しておき、SQLExecute関数で実行します。同じSQL文を繰り返し実行する場合には、準備しておいたSQL文を実行した方がパフォーマンスが向上します。

結果セットの取り出し

SQL文を実行した後、結果セットを取り出します。

SQLの実行結果(列)とアプリケーション・プログラム変数を関連付けるには、SQLBindCol関数でバインドします。

結果セットから1行ずつ行を取り出すには、SQLFetch関数を使用します。

結果セットからまとめて行を取り出すには、SQLExtendedFetch関数を使用します。

トランザクション制御

ODBCの仕様では、デフォルトで自動コミットが有効になっています。自動コミットのON/OFFを切り替えるには、SQLSetConnectOption関数を使用します。

自動コミットが有効な場合、SQL文を実行するたびに自動的にコミットが行われます。したがって、明示的にコミットを行う必要はありませんが、ロールバックすることができません。

自動コミットが無効な場合、コミットおよびロールバックを明示的に行うことができます。ODBCでは、COMMITROLLBACKなどのSQL文でトランザクション制御は行いません。トランザクション制御はSQLTransact関数で行います。

エラー処理

ODBC関数呼び出しの戻り値が SQL_ERROR または SQL_SUCCESS_WITH_INFO だった場合、診断情報が生成されます。次のODBC関数を呼び出すことにより、診断情報を取得することができます。

ただし、これらの関数自体が診断情報を生成することはありません。

データベースとの切断

データベースとの切断を行うには、SQLDisconnect関数を使用します。

データベースとの接続を確立する関数には、SQLConnectSQLDriverConnectの2種類ありますが、どちらを使用して接続した場合でもSQLDisconnect関数で切断することができます。

ハンドルの解放

次のODBC関数を呼び出すことにより、ハンドルを解放することができます。

ODBCバージョン3より前のバージョンでは、SQLFreeConnect関数やSQLFreeEnv関数のように、解放するハンドルの種類ごとに関数が分かれていましたが、ODBCバージョン3からSQLFreeHandle関数に統一されました。

SQLAllocHandle

SQLAllocHandle関数は、ハンドルを割り付けるODBC関数です。

構文

SQLRETURN SQLAllocHandle(SQLSMALLINT iType
                         SQLINTEGER  hParent,
                         SQLINTEGER  *pHandle);

引数

引数入出力説明
iTypeSQLSMALLINT入力割り付けるハンドルの種類
hParentSQLINTEGER入力親項目のハンドル
pHandleSQLINTEGER *出力ハンドルを格納する領域へのポインタ

引数iTypeには、割り付けるハンドルの種類を示す識別子を指定します。指定できる識別子は、次のとおりです。

識別子ハンドルの種類
SQL_HANDLE_ENV環境ハンドル
SQL_HANDLE_DBC接続ハンドル
SQL_HANDLE_STMTステートメント・ハンドル
SQL_HANDLE_DESC記述子ハンドル

引数hParentには、割り付けるハンドルの親項目のハンドルを指定します。割り当てるハンドルの種類と親項目のハンドルとの関係は、次のとおりです。

割り当てるハンドルの種類親項目のハンドル
環境ハンドル無し (SQL_NULL_HANDLE)
接続ハンドル環境ハンドル
ステートメント・ハンドル接続ハンドル

環境ハンドルには親項目が存在しませんので、SQL_NULL_HANDLEを指定します。

引数pHandleはプレースホルダです。実際にはSQLINTEGER型のポインタではなく、割り当てるハンドルに応じた型のポインタを指定します。ODBCプログラムに必要なハンドルの型は、次のとおりです。

項目ハンドルの型
環境SQLHENV
接続SQLHDBC
ステートメントSQLHSTMT
記述子SQLHDESC

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル

SQLAllocEnv

SQLAllocEnv関数は、環境ハンドルと関連するリソースを割り当てるODBC関数です。

ODBCバージョン3からは、SQLAllocHandle関数に置き換えられました。

構文

SQLRETURN SQLAllocEnv(SQLHENV *phenv);

引数

引数入出力説明
phenvSQLHENV *出力環境ハンドルへのポインタ

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗

SQLAllocConnect

SQLAllocConnect関数は、接続ハンドルと関連するリソースを割り当てるODBC関数です。SQLAllocConnect関数を呼び出す前に、SQLAllocEnv関数を呼び出して環境ハンドルを割り当てる必要があります。

ODBCバージョン3からは、SQLAllocHandle関数に置き換えられました。

構文

SQLRETURN SQLAllocConnect(SQLHENV henv,
                          SQLHDBC *phdbc);

引数

引数入出力説明
henvSQLHENV入力環境ハンドル
phdbcSQLHDBC *出力接続ハンドルへのポインタ

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効な環境ハンドル

SQLConnect

SQLConnect関数は、データベースへの接続を確立するODBC関数です。SQLConnect関数を呼び出す前に、接続ハンドルを割り当てる必要があります。

構文

SQLRETURN SQLConnect(SQLHDBC     hdbc,
                     SQLCHAR     *szDSN,
                     SQLSMALLINT cbDSN,
                     SQLCHAR     *szUID,
                     SQLSMALLINT cbUID,
                     SQLCHAR     *szPsw,
                     SQLSMALLINT cbPsw);

引数

引数入出力説明
hdbcSQLHDBC入力接続ハンドル
szDSNSQLCHAR *入力データソース名へのポインタ
cbDSNSQLSMALLINT入力データソース名の長さ
szUIDSQLCHAR *入力ユーザーIDへのポインタ
cbUIDSQLSMALLINT入力ユーザーIDの長さ
szPswSQLCHAR *入力パスワードへのポインタ
cbPswSQLSMALLINT入力パスワードの長さ

文字列を渡す引数 (szDSN, szUID, szPsw) がNULLで終了している場合、文字列の長さを表す引数 (cbDSN, cbUID, cbPsw) には、文字列がNULLで終わっていることを表す SQL_NTS を指定することができます。

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効な接続ハンドル

SQLDriverConnect

SQLDriverConnect関数は、データベースへの接続を確立するODBC関数で、SQLConnectの代替関数です。

構文

SQLRETURN SQLDriverConnect(SQLHDBC     hdbc,
                           SQLHWND     hWindow,
                           SQLCHAR     *szConnStr,
                           SQLSMALLINT cbConnnStr,
                           SQLCHAR     *szConnOut,
                           SQLSMALLINT cbConnOutMax,
                           SQLSMALLINT *pcbConnOut,
                           SQLSMALLINT fDriverConpletion);

引数

引数入出力説明
hdbcSQLHDBC入力接続ハンドル
hWindowSQLHWND入力ウィンドウ・ハンドル(プラットフォーム依存)
szConnStrSQLCHAR *入力接続文字列
cbConnnStrSQLSMALLINT入力接続文字列の長さ
szConnOutSQLCHAR *出力完了接続文字列を格納するバッファへのポインタ
cbConnOutMaxSQLSMALLINT入力完了接続文字列を格納するバッファの最大サイズ
pcbConnOutSQLSMALLINT *入力完了接続文字列のサイズ
fDriverConpletionSQLSMALLINT入力ユーザーにプロンプトで要求すればよいか

引数szConnStrには接続文字列を指定します。接続文字列は「属性=」の形式で属性を指定した文字列です。セミコロン記号で区切ることにより、複数の属性を列挙することができます。属性には次のようなものがあります(プラットフォームに依存)。

属性説明
DSNデータ・ソース名
UIDユーザーID
PWDユーザーIDに対応したパスワード

データ・ソースへの接続に成功すると、引数szConnOutで指定したバッファに、完了した接続文字列が格納されます。

引数fDriverConpletionに指定できる識別子を次に示します。

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効な接続ハンドル
SQL_NO_DATA_FOUND
データが無い

使用例

SQLRETURN   rc;
SQLHDBC     hDbc;
SQLCHAR     szConnStr[] = "DSN=SalesDB;UID=scott;PWD=tiger;";
SQLCHAR     szConnOut[255];
SQLSMALLINT cbConnOut;

rc = SQLDriverConnect(hDbc,
                      NULL
                      szConnStr,
                      SQL_NTS,
                      szConnOut,
                      255,
                      &cbConnOut,
                      SQL_DRIVER_NOPROMPT);

SQLAllocStmt

SQLAllocStmt()は新規のステートメント・ハンドルを割り当て、このハンドルを接続ハンドルで指定した接続に関連付けます。SQLAllocStmt()を呼び出す前にSQLConnect()を呼び出す必要があります。

ODBCバージョン3からは、SQLAllocHandle関数に置き換えられました。

構文

SQLRETURN SQLAllocStmt(SQLHDBC  hdbc,
                       SQLHSTMT *phstmt);

引数

引数入出力説明
hdbcSQLHDBC入力接続ハンドル
phstmtSQLHSTMT *出力ステートメント・ハンドルへのポインタ

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効な接続ハンドル

SQLExecDirect

SQLExecDirect関数は、指定されたSQLステートメントを直接実行するODBC関数です。

構文

SQLRETURN SQLExecDirect(SQLHSTMT   hstmt,
                        SQLCHAR    szSqlStr,
                        SQLINTEGER cbSqlStr);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドル
szSqlStrSQLCHAR *入力SQLステートメント文字列へのポインタ
cbSqlStrSQLSMALLINT入力SQLステートメント文字列の長さ

文字列を渡す引数 (szSqlStr) がNULLで終了している場合、文字列の長さを表す引数 (cbSqlStr) には、文字列がNULLで終わっていることを表す SQL_NTS を指定することができます。

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル
SQL_NO_DATA_FOUND
SQL文の検索条件に合う行が無い

SQLPrepare

SQLPrepare関数は、SQL文を準備するODBC関数です。準備したSQL文は、SQLExecute関数で実行することができます。

構文

SQLRETURN SQLPrepare(SQLHSTMT   hstmt,
                     SQLCHAR    szSqlStr,
                     SQLINTEGER cbSqlStr);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドル
szSqlStrSQLCHAR *入力SQLステートメント文字列へのポインタ
cbSqlStrSQLSMALLINT入力SQLステートメント文字列の長さ

文字列を渡す引数 (szSqlStr) がNULLで終了している場合、文字列の長さを表す引数 (cbSqlStr) には、文字列がNULLで終わっていることを表す SQL_NTS を指定することができます。

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル

SQLSetConnectOption

SQLSetConnectOption関数は、接続オプションを指定するODBC関数です。

構文

SQLRETURN SQLSetConnectOption(SQLHDBC     hdbc,
                              SQLSMALLINT fOption,
                              SQLPOINTER  pvParam);

引数

引数入出力説明
hdbcSQLHDBC入力接続ハンドル
fOptionSQLSMALLINT入力接続オプション
pvParamSQLPOINTER入力接続オプションに設定する値

引数fOptionには、次の値を指定することができます。

接続オプション
fOption意味
SQL_AUTOCOMMIT自動コミットのON/OFF
ODBCの仕様では、自動コミットはONがデフォルトです。

引数pvParamに指定できる値は、引数fOptionによって異なります。

SQL_AUTOCOMMIT
pvParam意味
SQL_AUTOCOMMIT_ON自動コミットON
SQL_AUTOCOMMIT_OFF自動コミットOFF

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効な接続ハンドル

SQLTransact

SQLTransact関数は、接続中の現在のトランザクションをコミットまたはロールバックするODBC関数です。

構文

SQLRETURN SQLTransact(SQLHENV     henv,
                      SQLHDBC     hdbc,
                      SQLSMALLINT fType);

引数

引数入出力説明
henvSQLHENV入力環境ハンドル
hdbcSQLHDBC入力接続ハンドル
fTypeSQLSMALLINT入力コミットまたはロールバックの種別

引数fTypeには、次の値を指定することができます。

fType意味
SQL_COMMITコミット
SQL_ROLLBACKロールバック

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル

SQLExecute

SQLExecute関数は、SQLPrepare関数で準備されたSQL文を実行するODBC関数です。

構文

SQLRETURN SQLExecDirect(SQLHSTMT hstmt);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドル

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル
SQL_NO_DATA_FOUND
SQL文の検索条件に合う行が無い

SQLBindCol

SQLBindCol()はアプリケーション・プログラム変数に対して列をバインドします。通常、SQLBindCol()を呼び出す前にSQLExecDirect()を呼び出します。

構文

SQLRETURN SQLBindCol(SQLHSTMT    hstmt,
                     SQLSMALLINT iCol,
                     SQLSMALLINT fType,
                     SQLPOINTER  pValue,
                     SQLINTEGER  cbValueMax,
                     SQLLEN      *pcbValue);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドル
iColSQLSMALLINT入力列番号(左から右へ順番に1から番号が付けられている)
fTypeSQLSMALLINT入力アプリケーション・データ・タイプ
pValueSQLPOINTER出力列データが保管されるバッファへのポインタ
cbValueMaxSQLINTEGER入力列データの保管に必要なバッファの最大サイズ(バイト単位)
pcbValueSQLLEN *出力列データのサイズを格納する領域へのポインタ

引数fTypeには次のうちいずれかを指定することができます。

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル

SQLFetch

SQLFetch()は結果セットの次の行にカーソルを進め、バインド列を更新します。

構文

SQLRETURN SQLFetch(SQLHSTMT hstmt);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドルへのポインタ

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル
SQL_NO_DATA_FOUND
結果セットに行が無いか、結果セットの全ての行の取り出しが完了した

SQLExtendedFetch

SQLExtendedFetch関数は、各バインド列ごとに複数の行が入った行セットを戻すことで、SQLFetch関数の機能を拡張をします。

構文

SQLRETURN SQLExtendedFetch(SQLHSTMT    hstmt,
                           SQLSMALINT  fFetchOrientation,
                           SQLINTEGER  FetchOffset,
                           SQLINTEGER  *pRowCount,
                           SQLSMALLINT *RowStatusArray);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドルへのポインタ
fFetchOrientationSQLSMALINT入力取り出しの方向
FetchOffsetSQLINTEGER入力未使用(予約済み)
pRowCountSQLINTEGER *出力取り出した行数を格納する領域へのポインタ
RowStatusArraySQLSMALLINT *出力状況値の配列

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル
SQL_NO_DATA_FOUND
結果セットに行が無い

SQLFreeStmt

SQLFreeStmt()はステートメント・ハンドルを解放します。SQLFreeStmt()を呼び出す前にSQLAllocStmt()を呼び出す必要があります。

構文

SQLRETURN SQLFreeStmt(SQLHSTMT    hstmt,
                      SQLSMALLINT fOption);

引数

引数入出力説明
hstmtSQLHSTMT入力ステートメント・ハンドルへのポインタ
fOptionSQLSMALLINT入力オプション

引数fOptionには次のうちいずれかを指定することができます。

SQL_CLOSE
ステートメント・ハンドルをクローズして、保留中の結果は破棄する。

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なステートメント・ハンドル

SQLDisconnect

SQLCisconnect()は接続ハンドルと関連する接続をクローズします。

構文

SQLRETURN SQLDisconnect(SQLHDBC hdbc);

引数

引数入出力説明
hdbcSQLHDBC入力接続ハンドル

戻り値

SQL_SUCCESS
成功
SQL_SUCCESS_WITH_INFO
成功(警告あり)
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効な接続ハンドル

SQLFreeHandle

SQLFreeHandle関数は、SQLAllocHandle関数で割り付けたハンドルを解放するODBC関数です。

構文

SQLRETURN SQLFreeHandle(SQLSMALLINT iType,
                        SQLINTEGER  iHandle);

引数

引数入出力説明
iTypeSQLSMALLINT入力解放するハンドルの種類
iHandleSQLINTEGER入力解放するハンドル

引数iTypeには、解放するハンドルの種類を示す識別子を指定します。指定できる識別子は、次のとおりです。

識別子ハンドルの種類
SQL_HANDLE_ENV環境ハンドル
SQL_HANDLE_DBC接続ハンドル
SQL_HANDLE_STMTステートメント・ハンドル
SQL_HANDLE_DESC記述子ハンドル

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル

SQLFreeConnect

SQLFreeConnect関数は、SQLAllocConnect関数で割り付けた接続ハンドルを解放するODBC関数です。

ODBCバージョン3からは、SQLFreeHandle関数に置き換えられました。

構文

SQLRETURN SQLFreeConnect(SQLHDBC hdbc);

引数

引数入出力説明
hdbcSQLHDBC入力解放する接続ハンドル

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル

SQLFreeEnv

SQLFreeEnv関数は、SQLAllocEnv関数で割り付けた環境ハンドルを解放するODBC関数です。

ODBCバージョン3からは、SQLFreeHandle関数に置き換えられました。

構文

SQLRETURN SQLFreeEnv(SQLHENV henv);

引数

引数入出力説明
henvSQLHENV入力解放する環境ハンドル

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル

SQLGetDiagRec

SQLGetDiagRec関数は、診断情報を取得します。他のODBC関数呼び出しの戻り値がSQL_ERRORまたはSQL_SUCCESS_WITH_INFOだったときに、診断情報を取得できます。

構文

SQLRETURN SQLGetDiagRec(SQLSMALLINT iType,
                        SQLINTEGER  handle,
                        SQLSMALLINT recNum,
                        SQLCHAR     *szSqlState,
                        SQLINTEGER  *pfNativeError,
                        SQLCHAR     *szErrorMsg,
                        SQLSMALLINT cbErroMsgMax,
                        SQLSMALLINT *pcbErrorMsg);

引数

引数入出力説明
iTypeSQLSMALLINT入力ハンドルの種類
handleSQLINTEGER入力診断情報が必要なハンドル
recNumSQLSMALLINT入力エラー・レコード番号(最初が1)
szSqlStateSQLCHAR *出力状態値
pfNativeErrorSQLINTEGER *出力元のエラー・コード
szErrorMsgSQLCHAR *出力メッセージ文字列を格納する領域へのポインタ
cbErrorMsgMaxSQLSQMLLINT入力メッセージ文字列を格納する領域の最大サイズ。
pcbErrorMsgSQLSQMLLINT *出力メッセージ文字列のバイト数

引数iTypeには、診断情報を取得するハンドルの種類を示す識別子を指定します。指定できる識別子は、次のとおりです。

識別子ハンドルの種類
SQL_HANDLE_ENV環境ハンドル
SQL_HANDLE_DBC接続ハンドル
SQL_HANDLE_STMTステートメント・ハンドル
SQL_HANDLE_DESC記述子ハンドル

引数cbErrorMsgMaxにSQL_MAX_MESSAGE_LENGTH + 1 より小さい値を指定したときは、エラー・メッセージが途中で切り捨てられる場合があります。

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル
SQL_NO_DATA_FOUND
エラー無し

SQLError

SQLError関数は、診断情報を取得します。他の関数呼び出しの戻り値がSQL_ERRORまたはSQL_SUCCESS_WITH_INFOだったときに、情報を取得できます。

ODBCバージョン3からは、SQLGetDiagRec関数に置き換えられました。

構文

SQLRETURN SQLError(SQLHENV     henv,
                   SQLHDBC     hdbc,
                   SQLHSTMT    hstmt,
                   SQLCHAR     *szSqlState,
                   SQLINTEGER  *pfNativeError,
                   SQLCHAR     *szErrorMsg,
                   SQLSMALLINT cbErroMsgMax,
                   SQLSMALLINT *pcbErrorMsg);

引数

引数入出力説明
henvSQLHENV入力環境ハンドル
hdbcSQLHDBC入力接続ハンドル
hstmtSQLHSTMT入力ステートメント・ハンドル
szSqlStateSQLCHAR *出力状態値
pfNativeErrorSQLINTEGER *出力元のエラー・コード
szErrorMsgSQLCHAR *出力メッセージ文字列を格納する領域へのポインタ
cbErrorMsgMaxSQLSQMLLINT入力メッセージ文字列を格納する領域の最大サイズ。
pcbErrorMsgSQLSQMLLINT *出力メッセージ文字列のバイト数

引数cbErrorMsgMaxにSQL_MAX_MESSAGE_LENGTH + 1 より小さい値を指定したときは、エラー・メッセージが途中で切り捨てられる場合があります。

戻り値

SQL_SUCCESS
成功
SQL_ERROR
失敗
SQL_INVALID_HANDLE
無効なハンドル
SQL_NO_DATA_FOUND
エラー無し
SEO 仕事 掲示板 レンタルサーバー プロフ SEO