DataSetは単独で使うとプログラム内にデータベースがあるように利用できます。
単独で使うために、まずDataSetの形(スキーマ)を定義するには以下のようにします。
-------------------------------------------------------
using System;
using System.Data;
class DataSetTest
{
static void Main()
{
// DataSetの作成
DataSet ds = new DataSet();
ds.DataSetName = "testData";
// DataTableの作成
DataTable dt = new DataTable();
dt.TableName = "testTable";
// DataColumnの作成、定義、Tableへ追加
DataColumn idCol = new DataColumn();
idCol.DataType = typeof(int);
idCol.ColumnName = "id";
dt.Columns.Add(idCol);
// DataColumnを作成しつつTableへ追加
dt.Columns.Add("user", typeof(string));
dt.Columns.Add("age", System.Type.GetType("System.Int32"));
// キー項目の設定
dt.PrimaryKey = new DataColumn[] { idCol };
ds.Tables.Add(dt);
// DataSetのスキーマを保存
ds.WriteXml("testdata.xml", XmlWriteMode.WriteSchema);
}
}
-------------------------------------------------------
上記サンプルを実行すると、testdata.xmlファイルに作成したDataSetのスキーマが保存されます。
このスキーマを利用してDataSetにデータを追加するためには以下のようにします。
-------------------------------------------------------
using System;
using System.Data;
class DataSetTest1
{
static void Main()
{
// DataSetの作成と定義の読み込み
DataSet ds = new DataSet();
ds.ReadXml("testdata.xml");
// 1行目のデータの作成
DataRow dr1 = ds.Tables[0].NewRow();
dr1[0] = 1;
dr1["user"] = "user1";
dr1["age"] = 25;
ds.Tables[0].Rows.Add(dr1);
// 2行目のデータの作成
DataRow dr2 = ds.Tables["testTable"].NewRow();
dr2.ItemArray = new object[] { 2, "user2", 37 };
ds.Tables["testTable"].Rows.Add(dr2);
// DataSetのスキーマとデータを保存
ds.WriteXml("testdata1.xml", XmlWriteMode.WriteSchema);
}
}
-------------------------------------------------------
プログラムの記述に統一性がないのは、いろいろな方法を試しているためです。
実際には自分がよく利用する方法を決めてしまったほうがいいでしょうね。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)