- - PR -
SqlDataAdapterでデータベースに上書きしたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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です。 | ||||
|
投稿日時: 2006-07-03 11:44
この方法で何が問題あるの? もしかしてトランザクション処理ってのを知らんとか? | ||||
|
投稿日時: 2006-07-03 11:51
ご返答ありがとうございます。
ええと、特に問題は無いです。 ただ、一気に出来るのかなあ、と思い投稿してみました。 | ||||
|
投稿日時: 2006-07-03 11:53
トランザクションってレベルでみると一気にだと思うんだけどなー。
コマンド単位で一気だって言ってるんなら、ストアドだって一気にできないってことだし。 | ||||
|
投稿日時: 2006-07-03 12:22
SqlCommandBuilderに頼らずに自分でInsert文等を組み立てておくほうが
いいと思います。 その場合であれば、Insert文の中にDelete文も含めて(SQL文を複数にして) 実行することもできるんじゃなかったかな。 | ||||
|
投稿日時: 2006-07-03 18:40
色々とご返答ありがとうございます。
>トランザクションってレベルでみると一気にだと思うんだけどなー。 >コマンド単位で一気だって言ってるんなら、ストアドだって一気にできないってことだし。 >その場合であれば、Insert文の中にDelete文も含めて(SQL文を複数にして) 実行することもできるんじゃなかったかな。 良く良く考えてみると私はInsert文に素晴らしい拡張機能を求めていたような気がします。 (System.IO.StreamWriterの上書きモードのような…) 出直します…ありがとうございました。 |
1