OleDb Access mdb/accdb 名前付きパラメータ

いまさら Access mdb/accdb OleDb 接続で名前付きパラメータクエリ

OleDb では名前付きパラメータが使用できない。
SQL文に ? でパラメータを記述して、その順番どおりに
OleDbParameter を追加していく必要がある。

同じパラメータ値を同一SQL内で2回使用する場合でも、
2つ分のパラメータを作成することになる。面倒ぃ・・・ だがしかし

Accessでは、SQL文の前に名前付きパラメータを指定できる。
new OleDbCommand( "Parameters hoge Text, fuga Integer, piyo Date;
Select * from ... where [tbl1].[column1] = hoge ..."
)

new OleDbParameter("hoge", OleDbType.VarWChar, 20)
new OleDbParameter("fuga", OleDbType.Integer)
new OleDbParameter("piyo", OleDbType.Date)

パラメータコレクションから Parameters ~ を自動生成するとよいかも。

@ をパラメータ名の先頭に付けると可読性up(オブジェクト名に使用可能な文字でござる)
Parameters @hoge Text, @fuga Integer, @piyo Date;
select * from ... where [tbl1].[column1] = @hoge ...

new OleDbParameter("@hoge", OleDbType.VarWChar, 20)

なお、長いテキスト(メモ型)は Parameters 型指定 Memo で、OleDbType.BSTR でないと
本当に長いテキスト(256文字超)を正しく処理できない???
LongVarWCharはエラーになる・・・

DataAdapter UpdateCommand/InsertCommand/DeleteCommand でも使用可能 [追記]