DataSet、DataTableの取り扱いについて要点
・色々なデーター上の取り扱いを考えるとDataTableだけでテーブルを管理せず、必ずDataSetに割り当てて追加編集などすると作業能率が良い
・XMLWrite等の機能はDataSetにある
・デバッガなどでDataSetの値は虫眼鏡のアイコンをクリックするとデータグリッドとして表示され全体を把握確認できる
各データの関係は
http://okwakatta.net/code/dst22.html
が非常に分かりやすい例を示している
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DataBindingTest2
{
public partial class Form1 : Form
{
DataSet dataSet;
DataTable dataTable;
public Form1()
{
InitializeComponent();
Init();
DoWork();
}
private void DoWork()
{
dataSet.Tables["SaveDataTable"].AcceptChanges(); //アンドゥポイント
DataRow row = dataSet.Tables["SaveDataTable"].NewRow(); //テーブル"SaveDataTable"のRowsの「型」書式を取り出す
row["Name"] = "ABCDEF";
row["FileLocation"] = "c:\\test2.jpg";
row["PointX"] = 12;
row["PointY"] = 24;
dataSet.Tables["SaveDataTable"].Rows.Add(row); //各値をセットしテーブルに加える(データセットから編集している点に注目)
dataSet.Tables["SaveDataTable"].Rows[2]["Name"] = "Test3"; //既存の値を書き換える(こちらもデータセットから編集している点に注目)
dataSet.Tables["SaveDataTable"].Rows[1].Delete();
dataSet.Tables["SaveDataTable"].RejectChanges(); //アンドゥしている
//検索抽出(LINQに似た検索抽出が可能)
DataRow[] dr = dataSet.Tables["SaveDataTable"].Select("PointX > 255");
foreach (var item in dr)
{
Console.WriteLine("{0} {1}",item["Name"],item["PointX"]);
}
}
private void Init()
{
dataTable = GetDataTablePictureSetting();
dataSet = GetSaveDataSet();
}
private DataSet GetSaveDataSet()
{
DataSet ds = new DataSet();
ds.Tables.Add(dataTable);
return ds;
}
private DataTable GetDataTablePictureSetting()
{
//ここで行の書式を決定している
DataTable dt = new DataTable("SaveDataTable");
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("FileLocation", typeof(string));
dt.Columns.Add("PointX", typeof(int));
dt.Columns.Add("PointY", typeof(int));
dt.Columns.Add("Display", typeof(string),"Name + FileLocation + PointX + PointY");
//新規に列を追加したり内容を編集できる(Rowsには名前を付けられない事に注目)
dt.Rows.Add(new object[] { "Test1", "c:\\test.jpg", 128, 128 });
dt.Rows.Add(new object[] { "Test2", "c:\\test3.png", 64, 64 });
dt.Rows[1]["PointX"] = "256"; //値の型が数字の場合必ずしも""は必要ない
return dt;
}
}
}
最終更新:2012年09月04日 22:47