- - PR -
ADO.NETのレコードの追加と削除
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-08-11 20:17
こんにちは。お世話になっております。
もしご存知の方がいましたらご教授ください。 現在ADO.NET(C#)で、Jet 4.0 OLE DB Providerを使い、MDBファイルへ データの追加と、削除を行おうとしています。 DataSetにテーブル(25列)を作り、13行ずつレコードの追加と削除を 行おうとしています。 一回目の、13レコードの追加をAとします。 二回目の、13レコードの追加をBとします。 次に、Aで追加した13レコードを削除します。 次に、三回目の13レコードの追加Cを行います。 DataSetはBの後にCが追加されますが DataSet.Clear(); DataAdapter.Fill(DataSet, "テーブル");を実行すると DataSet内容が Cで追加したレコードが、Bで追加したレコードの後に追加されず、 Bで追加したレコードの4行目以降に追加され Bの4行目以降のレコードが、Cの後にきます。 Aで追加したレコードの削除を、Access2000で削除すると、上記のような レコードの順番が、変わるとゆう事はありません。 レコードの順番が変わる原因がわかりません ご存じの方がいましたら、ご教授してください。 よろしくお願いします。 ちなみにレコードの追加は DataRow nRowL; for (int i = 0; i <= 12; i++) { nRowL = DataSet.Tables["テーブル"].NewRow(); nRowL["フィールド名"] = "***"; ・ ・ ・ DataSet.Tables["テーブル"].Rows.Add(nRowL); } DataAdapter.Update(DataSet, "テーブル"); レコードの削除は for (int i = 0; i <= 12; i++) { DataSet.Tables["テーブル"].Rows[i].Delete(); } DataAdapter.Update(DataSet, "テーブル"); で行っています。 |
|
投稿日時: 2005-08-11 21:07
ご質問の「順序が変わる理由」はわかりませんが、
一般にRDBではレコードの順序は保障されていないので、 結果が何らかの順序になることが必要であれば ・取得時に ORDER BY を用いる ・取得後に DataView を作る などの手段で、値に基づいた順序付けを行う必要があります。 #すなわち、「そんなこと気にしないほうがいいですよ」が言いたい |
|
投稿日時: 2005-08-12 05:58
Accessのテーブルにオートナンバー型のフィールド(主キー)を追加して
DataTableの主キーのフィールドをオートナンバー型にしてから行を 追加したらどうでしょうか。以下は、VB.NETの例です。 Dim dt As DataTable = ds.Tables("MyTable") Dim dc As DataColumn = dt.Columns("MyPrimaryKey") dc.AutoIncrement = True dc.AutoIncrementSeed = 1 dc.AutoIncrementStep = 1 dt.NewRow() .... da.Update(dt) _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |
|
投稿日時: 2005-08-12 12:36
にしざきさん、Accessさん
お世話になります。 早速の返答ありがとうございます。 レコードの順序とは、保障されていないのですね 私は、追加順に並ぶものだと思っていました。 (勉強不足ですみません) 対策として、にしざきさんのORDER BYをDataAdapterのSelectCommand に追加しました。 Accessさんの、オートナンバー型のフィールド(主キー)を追加 して、試してみましたが、レコードの順番は変わってしまいました。 ちなみに、Access2000でレコードを削除しても レコードの順番は、変わります。 |
1
