ホームページ > バックエンド開発 > C++ > CommandType が Text の場合、OleDbCommand パラメーターの順序は重要ですか?

CommandType が Text の場合、OleDbCommand パラメーターの順序は重要ですか?

DDD
リリース: 2024-12-30 17:46:12
オリジナル
149 人が閲覧しました

Does OleDbCommand Parameter Order Matter When CommandType is Text?

OleDbCommand パラメーターの順序と優先順位: 期待値が一致していないケース

OleDbCommand を使用してクエリを構築する場合、パラメーターの順序を正確に保証することが重要ですSQL ステートメント内のシーケンスに従います。よくある誤解は、名前付きパラメーターによってこの要件が排除されるという仮定を中心に展開されています。ただし、詳細なデバッグ セッションで明らかになったように、CommandType が Text に設定されている場合、OleDbCommand は名前付きパラメーターをサポートしていません。

指定された例では:

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;
ログイン後にコピー

ただし、結果は返されず、矛盾があることを示しています。 SQL ステートメントと一致するようにパラメーターを並べ替えると、クエリは正常に実行されます。

cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
ログイン後にコピー

これは、http://msdn.microsoft.com/en-us/library/system.data のドキュメントと一致しています。 oledb.oledbcommand.parameters.aspx。これは、OleDbCommand がテキスト モードの SQL ステートメントの名前付きパラメーターをサポートしないことを明示的に示しています。代わりに、疑問符 (?) プレースホルダーを使用する必要があり、コレクション内の OleDbParameter オブジェクトの順序は、コマンド テキスト内の配置と厳密に一致する必要があります。

以上がCommandType が Text の場合、OleDbCommand パラメーターの順序は重要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート