http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-20919.htm
OleDbをado.netで触るとき、「@xxxxxx」のような形式でSQLのパラメータを作成しても、『パラメータ名に関係なく、OleDbCommand.Parameters.Addした順』にそのパラメータの値が決定される。
OleDbの場合は,パラメータ名でやれないというか,
順番に指定していかないといけないので,SQL文は,
"DELETE FROM TABLE_01 WHERE (SerialNumber = ? )";
のように ? で指定しておいて,その数だけ順番に
パラメータを指定します。
つまり、以下のようなコードを書くと、
最初にaddしたパラメータが、KEY1の値を指定しているパラメータ(SQLだと@pram2の場所)になり、次にaddしたパラメータが、KEY2の値を指定しているパラメータ(SQLだと@pram1の場所)になる。
oCmd.CommandText = "delete from TABLE01 where KEY1 = @pram2 and KEY2 = @pram1"
oCmd.Parameters.Add(New OleDbParameter("@pram1", "11111"))
oCmd.Parameters.Add(New OleDbParameter("@pram2", "22222"))