OleDbCommand パラメーターの順序と優先順位
クエリをデバッグしようとしたときに、OleDbCommand 内のパラメーターの順序がクエリに影響を与える可能性があることが判明しました。結果。パラメータが順不同で追加された場合:
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin; cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
結果は返されませんでした。ただし、パラメータがクエリに表示されたのと同じ順序で追加された場合:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
クエリは適切に機能しました。
この矛盾は、OleDbCommand が名前付きコマンドをサポートしていないという事実に起因します。テキストコマンドのパラメータ。 MSDN に記載されているとおり:
OLE DB .NET プロバイダーは、CommandType が Text に設定されている場合に、SQL ステートメントまたは OleDbCommand によって呼び出されるストアド プロシージャにパラメーターを渡すための名前付きパラメーターをサポートしていません。この場合、疑問符 (?) プレースホルダーを使用する必要があります。
したがって、OleDbCommand でテキスト コマンドを使用する場合、パラメーターをコレクションに追加する順序が重要です。順序は、コマンド テキスト内のプレースホルダー疑問符の順序に直接対応する必要があります。
以上がOleDbCommand でテキスト コマンドを使用するときにパラメーターの順序が重要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。