- - PR -
ODP.NETでバインド変数を使用したテーブルの更新方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-18 17:12
はじめまして、よろしくお願いします。
現在、わたしはVB5.0で作成された現行システムを VB.NETにコンバージョンするという作業を行っています。 そこで、現行ではDBの接続をoo4oを使用して行っていたのですが、 ODP.NETを使用することになりました。 現行のシステムでは、バインド変数を使用してSQL文を 発行しているのですが、UPDATE文について、 バインド変数を使用すると、期待する結果を得ることができませんでした。 バインド変数を使用しなければ、よいのですが 現行のSQL文を変更したくないので、バインド変数を 使用したまま、UPDATE文の実行ができる方法を ご存知の方がいらっしゃいましたら、力を貸していただきたいと思っています。 コードは下記のようになってます。 Dim Cmd As New Oracle.DataAccess.Client.OracleCommand Cmd.CommandText = "UPDATE TABLE SET BBB = :BBB WHERE AAA = :AAA" Param1.ParameterName = "AAA" Param1.OracleDbType = Oracle.DataAccess.Client.OracleDbType.String Param1.Value = "01" Param1.Size = 2 Cmd.Parameters.Add(Param1) Param2.ParameterName = "BBB" Param2.OracleDbType = Oracle.DataAccess.Client.OracleDbType.String Param2.Value = "CHANGE" Param2.Size = 10 Cmd.Parameters.Add(Param2) Cmd.ExecuteNonQuery ------- 実行時にエラーが出ることはありませんが、レコードが更新されません。 ためしに、SQLの「:BBB」のバインド変数の部分に、文字を 直打ちしてみたら、レコードは更新されました。 バインド変数を使用した、更新はできないのでしょうか? ご存知の方がいらっしゃいましたら、お力をお貸しいただけますよう よろしくお願いいたします。 | ||||
|
投稿日時: 2004-08-19 08:40
パラメータに追加する順番を、反対にしてみたらどうでしょう?
| ||||
|
投稿日時: 2004-08-19 09:22
ODP.NETはデフォルトでは「名前」ではなく「位置」でバインドするようです。
OracleCommandのBindByNameプロパティをTrueに設定すれば名前でバインドしてくれます。 | ||||
|
投稿日時: 2004-08-19 10:03
回答ありがとうございました。
ご指摘の通りやって見ましたら、できました。 本当に助かりました。 ありがとうございました。 |
1