2011-09-14 13 views
0

私はIDの変数リストを持っています。 Oracleデータベース内のこれらのIDのそれぞれの「ステータス」列を更新したいとします。私が検索したと、次のオプションに遭遇していますCを使用してOracleデータベースの複数の行を更新する最良の方法

  • OracleDataAdapterの - のDataTableを持っていない、UPDATEステートメントが含まれているループのための唯一のID
  • (更新数千の可能性)
  • ストアドプロシージャ - これを行う必要がないことを望んでいる

助けていただければ幸いです。おかげ

+1

ストアドプロシージャに対してそうでする必要はありません、それらはそれほど悪くないです:)いくつかのアイデアのためにここを見て:http://stackoverflow.com/questions/2528181/update-multiple-rows-with-one-クエリ –

+0

質問が表示されません...オプションを試しましたか?何がうまくいかなかったのですか?いくつかのコードを表示してください... – Yahia

+1

と副次的なものとして、データベースに送られた多くのコマンドを含むforループですが、同じトランザクション内のすべてのコマンドは理論的にはあまりにも悪くありません。私は一般的に2番目が好きですが、それは議論の余地があります... –

答えて

0

すでにのIdsを知っている場合は、WHERE句で構築しては、ExecuteScalar行うことができます。

更新sometable セットのステータスが=(10,17,19,20,89)に どこsometableid「を出荷します」

0

ありがとうございます。私はそれを次のようにすることを念頭に置いていました。私はただ多くの繰り返しのために接続を開いたままにすることに懸念していました。

using (OracleConnection oracleConnection = new OracleConnection(connection)) 
       { 
        oracleConnection.Open(); 

        OracleCommand Command = new OracleCommand(); 
        Command.Connection = oracleConnection; 
        Command.CommandType = CommandType.Text; 
        status = "A"; 
        foreach (var memberID in MemberIDs) 
        { 
         sqlStatement = " UPDATE " + " ourdbtable" + " Set userstatus = '" + status + "' WHERE " + "memberid= " + memberID; 
         // command 
         Command.CommandText = sqlStatement; 
         Command.ExecuteNonQuery(); 
        } 
       } 
関連する問題