パラメータ化されたクエリ(C#OleDBライブラリ)の構文を思い出していましたが、私が直面した最初の2つの例は簡単でしたが、構文について何か気づいた:クエリにパラメータを追加するための構文
sqlCommand.CommandText = "SELECT * FROM Customer WHERE Name LIKE @Name;";
sqlCommand.Parameters.AddWithValue("@Name", "%" + searchString + "%");
私が気づいたのは、パラメータで置き換えられるものを特定するためのSQL形式が、私が通常使っていたものと異なっていたことです。私は通常、コロンと角括弧を使用します。今
sqlCommand.CommandText = "SELECT * FROM Customer WHERE [Name] LIKE :Name;";
sqlCommand.Parameters.AddWithValue(":Name", "%" + searchString + "%");
を、私は「@」を見ていた2つの例は、私が正常にのみアクセスおよびオラクルと連携SQLサーバ例、からのものでした。しかし、他のアクセス例も '@'を使って見ました。
実際には違いがありますか、それともスタイルのことですか?私は(少なくともアクセスを使用して)エンジンがパラメータ名を無視し、リストされた順序でパラメータを挿入することを思い出します。 (?)
OLE DB.NET Frameworkデータプロバイダーは疑問符が付いている位置パラメータの代わりに、名前付きパラメータを使用しています:
私はMSDNから注意してください。
これは、パラメータ名/構文が問題ではなく、無視されるという私の見解を強調しています。しかし、これが正しかったとしても、他のフレームワークなどに対してより堅牢性を提供する良い習慣がありますか?
OLEDBでは、パラメータ用のsigilは(予約文字を使用しない限り)重要ではなく、単にパラメータを使用するスタイルを定義します。クエリ内にパラメータ名を指定することをお勧めしますが、実際には最初に宣言されたすべてのクエリパラメータが処理されます。 –