トップページ > プログラム > 2016年04月19日 > spYNmTFF0

書き込み順位&時間帯一覧

2 位/171 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000004004



使用した名前一覧書き込んだスレッド一覧
tasuketekesuta (ワッチョイ d3d5-j49k)
デフォルトの名無しさん (ワッチョイ d3d5-j49k)
C++相談室 part124 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part124 [無断転載禁止]©2ch.net
164 :tasuketekesuta (ワッチョイ d3d5-j49k)[]:2016/04/19(火) 21:50:00.65 ID:spYNmTFF0
DataSet/DataAdapterの仕様についてご教授下さい。


■DataSet/DataAdapterの仕様
DataAdapter には、SELECT、UPDATE、INSERT、DELETEのSQL文が設定できます。
Fillメソッドを実行するとSELECTのSQL文の基づいてDataSetにデータを読み込みます。このときDataSetの各行には「編集なし」のマークがついています。
値を更新するとそのマークが「更新済」、削除すると「削除済」、データを追加すると「追加済」のマークに変わります。
Updateメソッドを実行すると、DataSetの各行のマークに応じて、設定してあるUPDATE、INSERT、DELETEのSQL文を実行します。
C++相談室 part124 [無断転載禁止]©2ch.net
165 :tasuketekesuta (ワッチョイ d3d5-j49k)[]:2016/04/19(火) 21:51:02.12 ID:spYNmTFF0
>>164 の続き

■実施したい事【概要】
DataAdapterのFillメソッドで取得したDataSet内のDataTableに対して、
挿入/更新操作をかけていき、全ての処理が終わったら、UPDATEを行う。

その際、DataTableに挿入した順番でDBへの挿入SQLが流れてほしい。
C++相談室 part124 [無断転載禁止]©2ch.net
166 :tasuketekesuta (ワッチョイ d3d5-j49k)[]:2016/04/19(火) 21:51:29.36 ID:spYNmTFF0
■実施したい事【詳細】

DataTable^ tbl;//←DataAdapterのFillメソッドで取得したDataSet内のDataTableだとします

while(10000行程度ループ){

DataRow^ tg_row = tbl->Rows->Find(ループ毎に変わる値);

if( static_cast<DataRow^>(tg_row)==nullptr){
DataRow^ row = tbl->NewRow();
row["hogehoge"] = ループ毎に変わる値;
tbl->Rows->Add(row);//←★★★★★★初期挿入★★★★★★★
}
else{
row["hogehoge"] = ループ毎に変わる値;
}

}

上記のソースで5000行のレコードが出来たと仮定します。
※つまり"ループ毎に変わる値"の重複が半分あったということ

この状態でUPDATEを行うと、
なぜか、初期挿入した順番通りにinsert文が発行されません。
※DB上で見ると順番がごちゃまぜです
C++相談室 part124 [無断転載禁止]©2ch.net
167 :デフォルトの名無しさん (ワッチョイ d3d5-j49k)[]:2016/04/19(火) 21:52:10.39 ID:spYNmTFF0
>>164 の続き

■質問@
なぜ、初期挿入した順番通りにinsert文が発行されないのでしょうか?
tbl->Rows->Findで取得したレコードの値を変更すると順番が変更になってしまうのでしょうか?

■質問A
初期挿入した順番にinsert文が発行されようにするには、
どの様にしたら良いでしょうか?
解決策をご教授下さい。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。