準備文を使用すると、繰り返し使用する文のパフォーマンスが向上します。ODBC は、準備文を使用するための関数をすべて提供しています。
準備文の概要については、文の準備を参照してください。
SQLPrepare を使って文を準備します。
たとえば、次のコード・フラグメントは、INSERT 文の準備方法を示します。
SQLRETURN retcode; SQLHSTMT stmt; retcode = SQLPrepare( stmt, "INSERT INTO Departments ( DepartmentID, DepartmentName, DepartmentHeadID ) VALUES (?, ?, ?,)", SQL_NTS); |
この例では次のようになっています。
retcode 操作の成功または失敗をテストするリターン・コードが設定されます。
stmt 文にハンドルを割り付け、後で参照できるようにします。
? 疑問符は文のパラメータのためのプレースホルダです。
SQLBindParameter を使用して文のパラメータ値を設定します。
たとえば、次の関数呼び出しは DepartmentID 変数の値を設定します。
SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &sDeptID, 0, &cbDeptID); |
この例では次のようになっています。
stmt はステートメント・ハンドルです。
1 は、この呼び出しで最初のプレースホルダの値が設定されることを示します。
SQL_PARAM_INPUT は、パラメータが入力文であることを示します。
SQL_C_SHORT は、アプリケーションで C データ型が使用されていることを示します。
SQL_INTEGER は、データベース内で SQL データ型が使用されていることを示します。
次の 2 つのパラメータは、カラム精度と 10 進数の小数点以下の桁数を示します。ともに、0 は整数を表します。
&sDeptID は、パラメータ値のバッファへのポインタです。
0 はバッファの長さを示すバイト数です。
&cbDeptID はパラメータ値の長さが設定されるバッファへのポインタです。
他の 2 つのパラメータをバインドし、sDeptId に値を割り当てます。
次の文を実行します。
retcode = SQLExecute( stmt); |
手順 2 ~ 4 は、複数回実行できます。
文を削除します。
文を削除すると、文自体に関連付けられているリソースが解放されます。文の削除には、SQLFreeHandle を使用します。
エラー・チェックを含む完全なサンプルについては、samples-dir\SQLAnywhere\ODBCPrepare\odbcprepare.cpp を参照してください。
SQLPrepare の詳細については、Microsoft の『ODBC Programmer's Reference』の「 SQLPrepare」を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |