- PR -

SqlDataAdapterでデータベースに上書きしたい

1
投稿者投稿内容
いも
常連さん
会議室デビュー日: 2006/01/26
投稿数: 31
投稿日時: 2006-07-03 11:39
XMLファイルのデータをそのままデータベースに移す、ということをしています。
読み込みはDataSetのReadXMLメソッドを使用しています。
書き込みはDataAdapterを使用しています。

SqlConnection conn = new SqlConnection("接続文字列");
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM DB名", conn);
SqlDataAdapter da = new SqlDataAdapter(sqlCmd);

DataSet ds = new DataSet();
ds.ReadXml("XMLファイルパス");

SqlCommandBuilder cb = new SqlCommandBuilder(da);

da.Update(ds.Tables[0]);

という感じに書いています。

これだとSqlCommandBuilderはInsert文を作ってくれます。
が、Insertする前に、データベース上の全てのデータを消したいのです。
ReadXml〜の前に、いったんFillしてClearとか色々頑張ったのですがうまくいきません。
DataAdapterを使う前にDELETEコマンドを投げて全部消すしかないのでしょうか?

もしわかる方がいらっしゃったら教えてくださいませんか。よろしくお願いします。
開発環境はVisualStudio2005 C#とSQL Server2000です。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-03 11:44
引用:

いもさんの書き込み (2006-07-03 11:39) より:
DataAdapterを使う前にDELETEコマンドを投げて全部消すしかないのでしょうか?


この方法で何が問題あるの?
もしかしてトランザクション処理ってのを知らんとか?
いも
常連さん
会議室デビュー日: 2006/01/26
投稿数: 31
投稿日時: 2006-07-03 11:51
ご返答ありがとうございます。

ええと、特に問題は無いです。
ただ、一気に出来るのかなあ、と思い投稿してみました。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-03 11:53
トランザクションってレベルでみると一気にだと思うんだけどなー。
コマンド単位で一気だって言ってるんなら、ストアドだって一気にできないってことだし。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-03 12:22
SqlCommandBuilderに頼らずに自分でInsert文等を組み立てておくほうが
いいと思います。
その場合であれば、Insert文の中にDelete文も含めて(SQL文を複数にして)
実行することもできるんじゃなかったかな。
いも
常連さん
会議室デビュー日: 2006/01/26
投稿数: 31
投稿日時: 2006-07-03 18:40
色々とご返答ありがとうございます。

>トランザクションってレベルでみると一気にだと思うんだけどなー。
>コマンド単位で一気だって言ってるんなら、ストアドだって一気にできないってことだし。

>その場合であれば、Insert文の中にDelete文も含めて(SQL文を複数にして)
実行することもできるんじゃなかったかな。


良く良く考えてみると私はInsert文に素晴らしい拡張機能を求めていたような気がします。
(System.IO.StreamWriterの上書きモードのような…)

出直します…ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)