SqlDataAdapterの初期化に使用される文字列は、SqlDataAdapterCommandTextのSelectCommandプロパティの になります。
このコードを使用して、そのコマンドにパラメーターを追加できます
da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
_mssqlCon.connection);
da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%");
- まず、パラメーター プレースホルダーを囲む一重引用符を削除します。
- 次に、ワイルドカード文字を AddWithValue の Value パラメータに直接追加します。
AddWithValueを使用するように依頼されましたが、これは便利なショートカットですが、多くの欠点もあり、すべて十分に文書化されていることを覚えておいてください。
したがって、 AddWithValueを使用せず、オブジェクトおよびコレクションの初期化子構文を使用する同じコードは、次のように記述できます。
da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
_mssqlCon.connection);
da.SelectCommand.Parameters.Add(new SqlParameter
{
ParameterName = "@search",
Value = "%" + txtSearch.Text + "%",
SqlDbType = SqlDbType.NVarChar,
Size = 2000 // Assuming a 2000 char size of the field annotation (-1 for MAX)
});
そして、上記のさらに単純化されたワンライナーバージョンは次のとおりです。
da.SelectCommand.Parameters.Add("@search",SqlDbType.NVarChar,2000).Value = "%" + txtSearch.Text + "%";