- - PR -
追加columnの保存
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-09-25 00:44
DataSet = dssi1
Table = bssi で private void Form6_Load(object sender, System.EventArgs e) { oleDbDataAdapter1.Fill(dssi1, "bssi"); dssi1.bssi.Columns.Add(System.DateTime.Now.ToShortDateString(), typeof(string)); for (int i = 0; i < dssi1.bssi.Rows.Count; i++) { dssi1.bssi.Rows[i][System.DateTime.Now.ToShortDateString()] = " "; } oleDbDataAdapter1.Update(dssi1, "bssi"); } このようにFormを開いた時点で翌日の列を追加しようしているんですが 追加された列が保存できません。 oleDbDataAdapter1.Update(dssi1, "bssi"); これだけでは追加した列は保存できないのでしょうか? ご意見お願いします。 | ||||
|
投稿日時: 2003-09-25 01:31
DBのテーブルにカラムを追加しようとしているのでしょうか?
そうであればoleDbDataAdapter1.Updateではできないと思います。 OracleであればALTER TABLEコマンドを発行するか、 プロシージャを作成して呼び出すなどしなければなりません。 そもそもテーブルに作成できるカラム数には制限がありますから、 日々増えるような項目はカラムではなく、レコードとして追加するように テーブルのデザインを変更したほうがよいと思います。 | ||||
|
投稿日時: 2003-09-25 11:11
OleDbDataAdapter1の、UpdateCommand, InsertCommand, DeleteCommandを設定しなければ、Updateメソッドは動きません。このメソッドは、各行が持っている変更情報によって、これらのコマンドを呼び出します。 で、“列”の追加ですが、ぴでさんのおっしゃるとおり、列の追加は別のコマンドになるので、Updateメソッドでは反映させられません。もし実行するとしたら、DataTable.Rows.Count回数だけ実行されてしまいます。どうなるかわかりますよね?「列の名前が重複している」というエラーになります。 また、列の数はOracleの場合、7で256列、9iで1000列だったかな?です。かつ、「列」の変更は「データ」の変更ではなく、「入れ物」の変更になるので、特殊です。普通、日ごとに列が増えるようなテーブルは作りません。 「RDB研究館(http://www.mars.dti.ne.jp/~o-shin/)」こっちであれば、ある程度の設計のお手伝いはできますよ。 | ||||
|
投稿日時: 2003-09-25 12:18
ご意見ありがとうございます。
Tableを変更して日付はRowに増やしていくことにしました。 こちらだとスムーズに作れました。 またご意見お願いします。 |
1