こちらの記事では、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を愛用
- Windows Form TableAdapter アプリケーション
最終更新日: 2021-05-20
作成日: 2012-10-25
- Windows Form TableAdapter アプリケーション