- 題名: Fillで読み込み別ファイルに書き出しする方法
- 日時: 2006/09/20 11:14:40
- ID: 17624
- この記事の返信元:
- (なし)
- この記事への返信:
- [17644] Re[1]: Fillで読み込み別ファイルに書き出しする方法2006/09/21 12:44:05
- ツリーを表示
Updateメソッドは、DataTableの各行の「状態」RowStateに従って
Insert、Update、Deleteのコマンドを切り替えて発行しているものなので、
未変更とみなされる行は何もされません。
この場合、マネージャとなるUpdateメソッドではなく、内部のInsertCommand
(Da.InsertCommand)を直接実行するのでよろしいかと。
(ループでexecuteNonQuery)
foreach(DataRow drw in Ds.tables["Syohin"].Rows)
{
/*ここで各パラメータにdrwから代入して、*/
/*実行*/
Da.InsertCommand.executeNonQuery();
}
※送る前にデータを消去したり調整をしているのであれば、
.Rowsではなく.Select("","",currentrows)
を使用してください。
分類:[.NET]
こんにちは エツです。 また御教授をお願いします。 xp VC#2005 Express Edition、SQLServer2005 Express Editionの環境です。 SQLServer2005 Express Editionのデータベースファイル Orgnal.mdf から抽出データをFillメソッドで データセットDs のSyohinテーブルに読み込みます。 読み込んだ内容を別ファイル d20060920.mdf に書き出し、次回からは d20060920.mdf を読み込む事で、 スピードアップを計ろうとしています。d20060920.mdf は Orgnal.mdf と同じでデータが空のファイルです。 データセット内テーブルへの読み込みは出来ていますので書き込みファイルにコネクションを変更して Updateをしたいのですが上手くできません。 データセット内テーブルへの読み込んだ後何もしないデータを書き出すのはできないのでしょうか? 書き出し部分は次のようにしましたが1行も書き出しはしません。 Cb = new SqlCommandBuilder(Da); Cb.QuotePrefix = "["; Cb.QuoteSuffix = "]"; Da.SelectCommand.Connection = CnW; //コネクションの変更 Da.SelectCommand.CommandText = "SELECT * FROM [Syohin]"; Cb.RefreshSchema(); Da.InsertCommand = Cb.GetInsertCommand(); Da.UpdateCommand = Cb.GetUpdateCommand(); int n = Da.Update(Ds, "Syohin"); //書き出し行数の確認 ExecuteNonQuery() を使った次の方法では書き出しはOKです。 しかしこの方法はINSERT SQL の作成に多くのコードを使っておりスマートでない--->時間の掛かるコード の気がします。 できれば上の方法でしたいのです。 CmdW.Connection = CnW; CnW.Open(); for (int i = 0; i < Ds.Tables["Syohin"].Rows.Count; i++) { object [] dt=Ds.Tables["Syohin"].Rows[i].ItemArray; string[] data = new string[dt.Length]; for (int j = 0; j < dt.Length; j++) data[j] = (string)dt[j]; CmdW.CommandText = SQL_INSERT("Syohin", data); CmdW.ExecuteNonQuery(); } CnW.Close(); //INSERT SQL の作成 private string SQL_INSERT(string tbl, string[] data) { Scmdtext = new StringBuilder("INSERT INTO [" + tbl + "] VALUES ('"); //各文字列の作成用 for (int i = 0; i < data.Length - 1; i++) { Scmdtext.Append(data[i].Replace("'", " ") + "','"); } Scmdtext.Append(data[data.Length - 1].Replace("'", " ") + "')"); return Scmdtext.ToString(); } どうか宜しくお願いします。