C# で DataTable を作成する

Muhammad Maisam Abbas 2024年2月16日
  1. C# で DataTable クラスを使用してデータテーブルを作成する
  2. C# でデータテーブルに行を追加する
  3. データテーブルのデータを C# で XML にエクスポートする
  4. データテーブルの構造を C# で XML にエクスポートする
C# で DataTable を作成する

このチュートリアルでは、C# でデータテーブルを作成して入力する方法について説明します。

C# で DataTable クラスを使用してデータテーブルを作成する

DataTable クラスは、C# でデータテーブルを作成するために使用されます。データテーブルは、C# のリレーショナルデータを含むテーブルを表します。DataTable クラスを使用して最初にデータテーブルを作成するとき、そのスキーマには指定されたスキーマがありません。データテーブルの構造を指定するには、DataColumn クラスのオブジェクトを作成して追加する必要があります。C# の DataTable.Columns.Add() 関数を使用して、DataColumn クラスのオブジェクトを DataTable クラスのオブジェクトに追加できます。

using System.Data;

namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
    }
  }
}

上記のコードでは、Customers という名前のデータテーブル workTable と、それぞれ Column1Column2 という名前の 2つの異なる列 column1column2 を作成しました。両方の列を追加して、workTable のスキーマを指定しました。これで、データを行の形式でテーブルに追加できます。

C# でデータテーブルに行を追加する

テーブルに行を追加するには、DataRow クラスのオブジェクトを作成する必要があります。DataRow クラスは、C# のテーブルにデータを追加するための新しい行を定義します。C# の DataTable.Row.Add() 関数を使用して、DataRow クラスのオブジェクトを DataTable クラスのオブジェクトに追加できます。次のコード例は、C# の DataRow クラスを使用してテーブルにデータを追加する方法を示しています。

using System.Data;

namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
      DataRow row1 = workTable.NewRow();
      row1["Column1"] = "value1";
      row1["Column2"] = "value2";
      workTable.Rows.Add(row1);
    }
  }
}

上記のコードでは、DataRow クラスのインスタンス row1workTable.NewRow() 関数で初期化しました。row1 の両方の列のデータを追加し、C# の workTable.Rows.Add(row1) 関数を使用して workTablerow1 を追加しました。

次の方法で、テーブルに新しい行を追加することもできます。

object[] o = { "object value1", "object value2" };
workTable.Rows.Add(o);

上記のコードでは、DataRow クラスのインスタンスを作成せずに、workTable テーブルに新しい行を追加しました。C# でテーブルに新しい行を挿入するために使用できる別のアプローチを以下に示します。

workTable.Rows.Add("direct value1", "direct value2");

上記のコードでは、オブジェクトの配列を宣言することなく、workTable テーブルの新しい行に値を直接追加しました。

データテーブルのデータを C# で XML にエクスポートする

DataTable クラスでテーブルを作成し、DataColumn クラスでその構造を定義し、テーブルに複数の行を追加したので、テーブルを表示できます。C# の DataTable.WriteXml() 関数を使用して、テーブル全体を xml ファイルにエクスポートできます。DataTable.WriteXml(path) 関数は、テーブルのすべてのデータを path の xml ファイルに書き込むために使用されます。次のコード例は、C# の DataTable.WriteXml() 関数を使用してテーブルデータを xml ファイルに書き込む方法を示しています。

using System.Data;

namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
      DataRow row1 = workTable.NewRow();
      row1["Column1"] = "value1";
      row1["Column2"] = "value2";
      workTable.Rows.Add(row1);
      object[] o = { "object value1", "object value2" };
      workTable.Rows.Add(o);
      workTable.Rows.Add("direct value1", "direct value2");
      workTable.WriteXml("workTable.xml");
    }
  }
}

上記のコードでは、C# の workTable.WriteXml("workTable.xml") 関数を使用して、workTable テーブル内のすべてのデータを xml ファイル workTable.xml にエクスポートしました。workTable.xml ファイルの内容を以下に示します。

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Customers>
    <Column1>value1</Column1>
    <Column2>value2</Column2>
  </Customers>
  <Customers>
    <Column1>object value1</Column1>
    <Column2>object value2</Column2>
  </Customers>
  <Customers>
    <Column1>direct value1</Column1>
    <Column2>direct value2</Column2>
  </Customers>
</DocumentElement>

データテーブルの構造を C# で XML にエクスポートする

逆に、テーブルのスキーマまたは構造だけを C# の xml ファイルにエクスポートすることもできます。DataTable.WriteXmlSchema(path) 関数は、データテーブルの構造を path 内の xml ファイルに書き込むために使用されます。次のコード例は、C# で DataTable.WriteXmlSchema(path) 関数を使用してテーブルの構造を xml ファイルに書き込む方法を示しています。

using System.Data;

namespace data_table {
  class Program {
    static void Main(string[] args) {
      DataTable workTable = new DataTable("Customers");
      DataColumn column1 = new DataColumn("Column1");
      DataColumn column2 = new DataColumn("Column2");
      workTable.Columns.Add(column1);
      workTable.Columns.Add(column2);
      DataRow row1 = workTable.NewRow();
      row1["Column1"] = "value1";
      row1["Column2"] = "value2";
      workTable.Rows.Add(row1);
      object[] o = { "object value1", "object value2" };
      workTable.Rows.Add(o);
      workTable.Rows.Add("direct value1", "direct value2");
      workTable.WriteXml("workTable.xml");
      workTable.WriteXmlSchema("workTableSchema.xml");
    }
  }
}

上記のコードでは、C# の workTable.WriteXmlSchema("workTableSchema.xml") 関数を使用して、workTable テーブルの構造を xml ファイル workTableSchema.xml にエクスポートしました。workTable.Schema.xml ファイルの内容を以下に示します。

<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Customers" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Customers">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Column1" type="xs:string" minOccurs="0" />
              <xs:element name="Column2" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp DataTable