次の方法で共有


CDaoDatabase::Execute

データベースで、アクション クエリまたは SQL ステートメントを実行します。

void Execute( 
   LPCTSTR lpszSQL, 
   int nOptions = dbFailOnError  
);

パラメーター

  • lpszSQL
    Null で終わり、実行する有効な SQL コマンドを含んでいる文字列へのポインター。

  • nOptions
    クエリの整合性に関するオプションを指定する整数。 ビットごとの OR 演算子 ( |) を使って、次の定数を組み合わせて指定できます。組み合わせは矛盾しないように指定します。たとえば、dbInconsistentdbConsistent を組み合わせることはできません。

    • dbDenyWrite   他のユーザーに書き込み権を許可しません。

    • dbInconsistent   (既定) 一貫性を持たない更新。

    • dbConsistent   一貫性を持つ更新。

    • dbSQLPassThrough   SQL パススルー。 SQL ステートメントを処理するために ODBC データ ソースに渡します。

    • dbFailOnError   エラー発生時に、更新をロールバックします。

    • dbSeeChanges   編集中のデータを別のユーザーが変更したときに、ランタイム エラーを生成します。

注意

dbInconsistentdbConsistent が同時に指定されるか、またはどちらも指定されないと、既定の結果が返されます。 この定数の詳細については、DAO ヘルプの「Execute Method」を参照してください。

解説

Execute は、結果を返さないアクション クエリ、または SQL パススルー クエリに対してだけ動作します。 選択クエリはレコードを返すため、動作しません。

アクション クエリの定義とその詳細については、DAO ヘルプの「Action Query」および「Execute Method」を参照してください。

ヒント

構文的に正しい SQL ステートメントや適切なアクセス権が指定されていれば、1 行も変更や削除されなくても、Execute メンバー関数は失敗ではありません。 そのため、更新クエリまたは削除クエリを実行するために Execute メンバー関数を使うときは、常に dbFailOnError オプションを使います。 このオプションを指定すると、影響するレコードがロックされていて、更新または削除できないと、MFC は CDaoException 型の例外をスローし、成功したすべての変更をロールバックするようにします。 GetRecordsAffected を呼び出せば、いつでも、どれだけのレコードが影響を受けたかどうかを知ることができることを覚えておいてください。

直前の Execute の呼び出しで影響を受けたレコード数を調べるには、データベース オブジェクトの GetRecordsAffected メンバー関数を呼び出します。 たとえば、GetRecordsAffected は、アクション クエリを実行したときに、削除、更新、挿入されたレコード数についての情報を返します。 カスケード更新やカスケード削除が行われた場合、返されるレコード数には、関連テーブルでの変更内容は反映されていません。

Execute は、レコードセットを返しません。 レコードを選択するクエリに対して Execute を使うと、MFC は CDaoException 型の例外をスローします。 CDatabase::ExecuteSQL に類似した ExecuteSQL メンバー関数は存在しません。

必要条件

**ヘッダー:**afxdao.h

参照

参照

CDaoDatabase クラス

階層図

その他の技術情報

CDaoDatabase のメンバー