目次

TableAdapterコンポーネントのInsertメソッドを利用したレコードの追加 - C#

こちらの記事では、BindingSourceを利用してレコードを追加するコードを紹介しました。
この記事ではTableAdapterコンポーネントのInsertメソッドを利用してレコードを追加する方法を紹介します。BindingSourceを経由せずに直接レコードを追加するような動作となります。

UI

下図のUIを準備します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SimpleCardApp
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      // TODO: このコード行はデータを 'iPentecSandBoxDataSet.SimpleProduct' テーブルに読み込みます。
      //必要に応じて移動、または削除をしてください。
      this.simpleProductTableAdapter.Fill(this.iPentecSandBoxDataSet.SimpleProduct);

    }

    private void button1_Click(object sender, EventArgs e)
    {
      simpleProductBindingSource.MovePrevious();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      simpleProductBindingSource.MoveNext();
    }

    private void button3_Click(object sender, EventArgs e)
    {
      simpleProductTableAdapter.Insert("NEW", 100);
      this.simpleProductTableAdapter.Fill(this.iPentecSandBoxDataSet.SimpleProduct);
    }
  }
}

解説

private void button3_Click(object sender, EventArgs e)
{
  simpleProductTableAdapter.Insert("NEW", 100);
  this.simpleProductTableAdapter.Fill(this.iPentecSandBoxDataSet.SimpleProduct);
}
TableAdapterのInsert()メソッドを呼び出してレコードを挿入します。引数はテーブル列に設定する値です。テーブルの構造により引数の個数や型は変わります。上記の例では(int=ID, nchar, int)の形式のテーブルのため、IDを除く列の値をInsertメソッドに渡します。上記のコードではProductName列に"NEW"、Price列に"100"の値を持つレコードを追加します。
データベースにレコードを挿入しただけではUIには反映されないため、Fill()メソッドを呼び出しUIを更新します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


button3をクリックしその後、button2をクリックし、末尾のレコードまで進めます。末尾のレコードにコードで記述した値を持つレコードが追加できています。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2021-05-20
作成日: 2012-10-25
iPentec all rights reserverd.