クエリを 40 分間デバッグしようとした結果、パラメーターの順序が重要な役割を果たすことが判明しました。問題のクエリは次のとおりです:
SELECT * FROM tblSomething WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
ただし、パラメータが次の順序で追加された場合:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
結果は返されませんでした。 @dtDebut と @dtFin の順序を逆にすることで問題が解決されました。
当初は、このような順序の依存関係を回避するために名前付きパラメーターが導入されると想定されていました。ただし、MSDN によると:
OLE DB .NET プロバイダーは、CommandType が Text に設定されている場合に、OleDbCommand によって呼び出される SQL ステートメントまたはストアド プロシージャにパラメーターを渡すための名前付きパラメーターをサポートしていません。この場合、疑問符 (?) プレースホルダーを使用する必要があります。
したがって、疑問符プレースホルダーを使用してパラメーターを指定して OleDbCommand を使用する場合は、パラメーターの正しい順序を維持することが重要です。
以上が疑問符プレースホルダーを使用する OleDbCommand クエリではパラメーターの順序は重要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。