OleDbCommand パラメーターの順序と優先順位
OleDbCommand でパラメーターを使用してクエリを実行する場合、パラメーターの順序と優先順位を理解することが重要です。名前付きパラメーターを使用しているにもかかわらず、CommandType が Text に設定されている場合、OleDbCommand は SQL ステートメントまたはストアド プロシージャの名前付きパラメーターをサポートしません。
そのため、クエリでは疑問符 (?) プレースホルダーを使用する必要があります。これらのプレースホルダーがクエリ内に表示される順序は、OleDbParameter オブジェクトが OleDbParameterCollection に追加される順序に対応します。
次のクエリを考えてみましょう:
SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
このクエリを正しく実行するには、パラメータは次のように OleDbCommand に追加する必要があります:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("?dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("?dtFin", OleDbType.Date).Value = dateTraitementFin;
「@dtDebut」と「@dtFin」は、それぞれ「?dtDebut」と「?dtFin」に置き換えられました。疑問符プレースホルダーは、クエリ内での出現順序と一致する必要があります。
前述のデバッグ例では、パラメーターをコレクションに追加するときにパラメーターが切り替えられました。 OleDbCommand はクエリで指定された順序ではなく、追加された順序でパラメータを使用してクエリを実行したため、結果は返されませんでした。
したがって、順序と優先順位に注意することが重要です。疑問符プレースホルダーを使用する場合の OleDbCommand のパラメーターの数。そうしないと、予期しない結果やエラーが発生する可能性があります。
以上がパラメーターの順序は OleDbCommand のクエリ結果にどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。