Ultra Light では、ExecuteStatement メソッド (ULPreparedStatement クラスのメンバー) を使用して、SQL データ操作を実行できます。
Ultra Light では、? 文字を使用してクエリのパラメーターを示します。INSERT 文、UPDATE 文、DELETE 文では必ず、準備文での順序位置に従ってそれぞれの ? が参照されます。たとえば、最初の ? はパラメーター 1、2 番目の ? はパラメーター 2、のようになります。
次のコードで ULPreparedStatement を宣言します。
ULPreparedStatement * prepStmt; |
実行する SQL 文を準備します。
次のコードは、INSERT 文の実行を準備します。
prepStmt = conn->PrepareStatement("INSERT INTO MyTable(MyColumn1) VALUES (?)"); |
文を準備するときにエラーをチェックします。
たとえば、SQL 構文のエラーのチェックには次のコードが有用です。
if( prepStmt == NULL ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error return; } |
準備文で ? 文字を置き換える値を設定します。
次のコードは、エラーチェック時に ? 文字を "some value" に設定します。たとえば、パラメーターの順序が準備文内のパラメーター数の範囲外である場合は、エラーがキャッチされます。
if( !prepStmt->SetParameterString(1, "some value") ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error return; } |
準備文を実行し、データをデータベースに挿入します。
次のコードは、文の実行後に発生する可能性があるエラーをチェックします。 たとえば、ユニークインデックス内に重複したインデックスの値が見つかると、エラーが返されます。
bool success; success = prepStmt->ExecuteStatement(); if( !success ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error } else { // Use the following line if you are interested in the number of rows inserted ... ul_u_long rowsInserted = prepStmt->GetRowsAffectedCount(); } |
準備文のリソースをクリーンアップします。
次のコードは、準備文のオブジェクトで使用されたリソースを解放します。 このオブジェクトには、Close メソッドを呼び出した後はアクセスしないでください。
prepStmt->Close(); |
データをデータベースにコミットします。
次のコードは、データをデータベースに保存し、データの損失を防ぎます。 アプリケーションがコミット呼び出しを完了する前に、デバイスアプリケーションが予期せず終了すると、手順 5 のデータが失われます。
conn->Commit(); |
Ultra Light では、? 文字を使用してクエリのパラメーターを示します。INSERT 文、UPDATE 文、DELETE 文では必ず、準備文での順序位置に従ってそれぞれの ? が参照されます。たとえば、最初の ? はパラメーター 1、2 番目の ? はパラメーター 2、のようになります。
次のコードで ULPreparedStatement を宣言します。
ULPreparedStatement * prepStmt; |
実行する SQL 文を準備します。
次のコードは、DELETE 文の実行を準備します。
prepStmt = conn->PrepareStatement("DELETE FROM MyTable(MyColumn1) VALUES (?)"); |
文を準備するときにエラーをチェックします。
たとえば、SQL 構文のエラーのチェックには次のコードが有用です。
if( prepStmt == NULL ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error return; } |
準備文で ? 文字を置き換える値を設定します。
次のコードは、エラーチェック時に ? 文字を 7 に設定します。たとえば、パラメーターの順序が準備文内のパラメーター数の範囲外である場合は、エラーがキャッチされます。
ul_s_long value_to_delete = 7; if( !prepStmt->SetParameterInt(1, value_to_delete) ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error. return; } |
準備文を実行し、データベースからデータを削除します。
次のコードは、文の実行後に発生する可能性があるエラーをチェックします。 たとえば、外部キーが参照しているローを削除しようとすると、エラーが返されます。
bool success; success = prepStmt->ExecuteStatement(); if( !success ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error } else { // Use the following line if you are interested in the number of rows deleted ... ul_u_long rowsDeleted = prepStmt->GetRowsAffectedCount(); } |
準備文のリソースをクリーンアップします。
次のコードは、準備文のオブジェクトで使用されたリソースを解放します。 このオブジェクトには、Close メソッドを呼び出した後はアクセスしないでください。
prepStmt->Close(); |
データをデータベースにコミットします。
次のコードは、データをデータベースに保存し、データの損失を防ぎます。 アプリケーションがコミット呼び出しを完了する前に、デバイスアプリケーションが予期せず終了すると、手順 5 のデータが失われます。
conn->Commit(); |
Ultra Light では、? 文字を使用してクエリのパラメーターを示します。INSERT 文、UPDATE 文、DELETE 文では必ず、準備文での順序位置に従ってそれぞれの ? が参照されます。たとえば、最初の ? はパラメーター 1、2 番目の ? はパラメーター 2、のようになります。
次のコードで ULPreparedStatement を宣言します。
ULPreparedStatement * prepStmt; |
実行する SQL 文を準備します。
次のコードは、UPDATE 文の実行を準備します。
prepStmt = conn->PrepareStatement("UPDATE MyTable SET MyColumn = ? WHERE MyColumn = ?"); |
文を準備するときにエラーをチェックします。
たとえば、SQL 構文のエラーのチェックには次のコードが有用です。
if( prepStmt == NULL ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error return; } |
準備文で ? 文字を置き換える値を設定します。
次のコードは、エラーチェック時に ? 文字を整数値に設定します。たとえば、パラメーターの順序が準備文内のパラメーター数の範囲外である場合は、エラーがキャッチされます。
bool success; success = prepStmt->SetParameterInt( 1, 25 ); if( success ) { success = prepStmt->SetParameterInt( 2, -1 ); } if( !success ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error return; } |
準備文を実行し、データベースのデータを更新します。
次のコードは、文の実行後に発生する可能性があるエラーをチェックします。 たとえば、ユニークインデックス内に重複したインデックスの値が見つかると、エラーが返されます。
success = prepStmt->ExecuteStatement(); if( !success ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error } else { // if you are interested in the number of rows updated ... ul_u_long rowsUpdated = prepStmt->GetRowsAffectedCount(); } |
準備文のリソースをクリーンアップします。
次のコードは、準備文のオブジェクトで使用されたリソースを解放します。 このオブジェクトには、Close メソッドを呼び出した後はアクセスしないでください。
prepStmt->Close(); |
データをデータベースにコミットします。
次のコードは、データをデータベースに保存し、データの損失を防ぎます。 アプリケーションがコミット呼び出しを完了する前に、デバイスアプリケーションが予期せず終了すると、手順 5 のデータが失われます。
conn->Commit(); |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |