C# Programming

Image

MSDE を使う (Windows.Forms バージョン)

開発環境: Visual Studio 2003 

1.目次

2.はじめに

コンソールバージョンでは、SQL 認証をどうするのか、コネクションストリングをどうするのか、結構悩まないと
いけないんですが、サーバーエクスプローラを使えば、割と簡単にデータベースアプリケーションを作ることができます。

ということで、サーバーエクスプローラを使ったデータベースアプリケーションの作り方をメモっておきます。

3.参考

(1) 

4.Windows.Forms での参照表示

1. Windows.Forms の新しいプロジェクトを作成します。
2. サーバーエクスプローラで、先ほどの Books のテーブルを Windows.Forms にドラッグ&ドロップします。
  すると、次のように sqlConnection1, sqlDataAdapter1 がフォームデザイナー上に表示されます。

Image

ポイント
この時点で、sqlConnection1 のプロパティを見てください。
次のように、自動的に Connection String を作成してくれています。
data source=UCHUKAMEN\VSdotNET;initial catalog=test;integrated security=SSPI;workstation id=UCHUKAMEN;packet size=4096

4. 次に、sqlDataAdapter1 のプロパティを見てください。
SelectCommand、DeleteCommand、InsertCommand、UpdateCommand が自動的に生成されています。

このように、フォームデザイナーのサーバーエクスプローラを使うことによって、わざわざコネクションストリングを手で
コーディングする必要がなくなります。

3. 次に、ソリューションエクスプローラより、プロジェクトを右クリックし、追加→新しい項目の追加を選択します。
すると、次のような新しい項目の追加のダイアログが表示されます。
Image

そこで、テンプレートよりデータセットを選択し、Dataset1.xsd を作ります。

4. 次にツールボックスのデータ タブより、DataSet をフォーム上にドラッグ&ドロップします。
すると、つぎのようなデータセットの追加ダイアログが表示されます。
Image

5. ここで、型指定されたデータセットを選択し、OKボタンを押します。
すると、Dataset1.xsd という XML スキーマが表示されます。
この時点では、テンプレートでしかありません。
Image

6. そこで、サーバーエクスプローラから Books テーブルを Dataset1.xsd へドラッグ&ドロップします。
すると、次のようにデータベースのデザインビューが表示されます。
これで、XML スキーマが Books のスキーマに自動的にセットされます。
Image


7, 次に Table Mappings の設定を行います。sqlDataAdapter1 のプロパティで TableMappings コレクションの ... ボタンを
押すと次の Table Mappings の設定ダイアログが表示されます。
テーブル名および列名を指定するにデータセットを使用するにチェックしてOKボタンを押します。
Image


8. 次に、フォームの Load イベントで、次のコードを追加します。
これで、sqlDataAdapter1 を使って、DataSet にデータを Fill します。
        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.sqlDataAdapter1.Fill(this.dataset1);
        }

9. 次にツールバーより DataGrid を Formにドラッグ&ドロップします。
このDataGridの Dock プロパティを Fill にします。次にDataGrid の DataSource のプロパティをドロップダウンリストより、先ほど作った dataset1を選択します。
Image

10. 次に DataGrid の DataMember のプロパティのドロップダウンリストから、Books テーブルを選択します。
すると次のように、表示されます。
Image
11. これで、コンパイル&実行してみてください。次のように表示されます。
Image

12. これでは、見た目が悪いので、DataGrid の TableStyle プロパティの ... ボタンを押して、
次の DataGridTableStyle コレクションエディタを表示します。
ここで、MappingName のドロップダウンリストから Books を選択します。
Image

13. 次に、このDataGridTableStyle コレクションエディタ から、GridColumStyle の ... ボタンを押して、
DataGridColumStyle コレクションエディタを表示して、コラムのスタイルを決定します。
まずは、MappingName を指定したいカラム名を選択します。
そして、Width を適当な幅にします。
必要に応じて、適当にプロパティを修正することによって、見た目を修正できます。

Image

14. これで次のようなデータベースの表示ができます。
Image

ここまでで、コードを書いたのは step 8 の this.sqlDataAdapter1.Fill(this.dataset1); だけです。

4−1.Windows.Forms での参照表示のソースコード

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WinDB1
{
    /// <summary>
    /// Form1 の概要の説明です。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
        private System.Data.SqlClient.SqlCommand sqlInsertCommand1;
        private System.Data.SqlClient.SqlCommand sqlUpdateCommand1;
        private System.Data.SqlClient.SqlCommand sqlDeleteCommand1;
        private System.Data.SqlClient.SqlConnection sqlConnection1;
        private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
        private System.Windows.Forms.DataGrid dataGrid1;
        private WinDB1.Dataset1 dataset1;
        private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
        /// <summary>
        /// 必要なデザイナ変数です。
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            //
            // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
            //
        }

        /// <summary>
        /// 使用されているリソースに後処理を実行します。
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

                #region Windows Form Designer generated code
        /// <summary>
        /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディタで変更しないでください。
        /// </summary>
        private void InitializeComponent()
        {
            this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
            this.sqlInsertCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlUpdateCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlDeleteCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
            this.dataGrid1 = new System.Windows.Forms.DataGrid();
            this.dataset1 = new WinDB1.Dataset1();
            this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();
            this.dataGridTextBoxColumn1 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn2 = new System.Windows.Forms.DataGridTextBoxColumn();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.dataset1)).BeginInit();
            this.SuspendLayout();
            // 
            // sqlSelectCommand1
            // 
            this.sqlSelectCommand1.CommandText = "SELECT ID, Title FROM Books";
            this.sqlSelectCommand1.Connection = this.sqlConnection1;
            // 
            // sqlConnection1
            // 
            this.sqlConnection1.ConnectionString = "data source=
            UCHUKAMEN\\VSdotNET;initial catalog=test;integrated security=SSPI;work" +
                "station id=UCHUKAMEN;packet size=4096";
            // 
            // sqlInsertCommand1
            // 
            this.sqlInsertCommand1.CommandText = "INSERT INTO Books(ID, Title) VALUES (@ID, @Title); 
            SELECT ID, Title FROM Books WH" +
                "ERE (ID = @ID)";
            this.sqlInsertCommand1.Connection = this.sqlConnection1;
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@ID", System.Data.SqlDbType.Int, 4, "ID"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Title", System.Data.SqlDbType.NVarChar, 100, "Title"));
            // 
            // sqlUpdateCommand1
            // 
            this.sqlUpdateCommand1.CommandText = "UPDATE Books SET ID = @ID, Title = 
            @Title WHERE (ID = @Original_ID) AND (Title = " +
                "@Original_Title); SELECT ID, Title FROM Books WHERE (ID = @ID)";
            this.sqlUpdateCommand1.Connection = this.sqlConnection1;
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@ID", System.Data.SqlDbType.Int, 4, "ID"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Title", System.Data.SqlDbType.NVarChar, 100, "Title"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_ID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "ID", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_Title", System.Data.SqlDbType.NVarChar, 100, System.Data.ParameterDirection.Input, 
            false, ((System.Byte)(0)), ((System.Byte)(0)), "Title", System.Data.DataRowVersion.Original, null));
            // 
            // sqlDeleteCommand1
            // 
            this.sqlDeleteCommand1.CommandText = "DELETE FROM Books WHERE (ID = @Original_ID) AND (Title = @Original_Title)";
            this.sqlDeleteCommand1.Connection = this.sqlConnection1;
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_ID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "ID", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_Title", System.Data.SqlDbType.NVarChar, 100, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "Title", System.Data.DataRowVersion.Original, null));
            // 
            // sqlDataAdapter1
            // 
            this.sqlDataAdapter1.DeleteCommand = this.sqlDeleteCommand1;
            this.sqlDataAdapter1.InsertCommand = this.sqlInsertCommand1;
            this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
            this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
            new System.Data.Common.DataTableMapping("Table", "Books", new System.Data.Common.DataColumnMapping[] {
            new System.Data.Common.DataColumnMapping("ID", "ID"),
            new System.Data.Common.DataColumnMapping("Title", "Title")})});
            this.sqlDataAdapter1.UpdateCommand = this.sqlUpdateCommand1;
            // 
            // dataGrid1
            // 
            this.dataGrid1.DataMember = "Books";
            this.dataGrid1.DataSource = this.dataset1;
            this.dataGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid1.Name = "dataGrid1";
            this.dataGrid1.Size = new System.Drawing.Size(292, 266);
            this.dataGrid1.TabIndex = 0;
            this.dataGrid1.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {
            this.dataGridTableStyle1});
            // 
            // dataset1
            // 
            this.dataset1.DataSetName = "Dataset1";
            this.dataset1.Locale = new System.Globalization.CultureInfo("en-US");
            this.dataset1.Namespace = "http://tempuri.org/Dataset1.xsd";
            // 
            // dataGridTableStyle1
            // 
            this.dataGridTableStyle1.DataGrid = this.dataGrid1;
            this.dataGridTableStyle1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {
            this.dataGridTextBoxColumn1,
            this.dataGridTextBoxColumn2});
            this.dataGridTableStyle1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGridTableStyle1.MappingName = "Books";
            // 
            // dataGridTextBoxColumn1
            // 
            this.dataGridTextBoxColumn1.Format = "";
            this.dataGridTextBoxColumn1.FormatInfo = null;
            this.dataGridTextBoxColumn1.HeaderText = "ID";
            this.dataGridTextBoxColumn1.MappingName = "ID";
            this.dataGridTextBoxColumn1.Width = 75;
            // 
            // dataGridTextBoxColumn2
            // 
            this.dataGridTextBoxColumn2.Format = "";
            this.dataGridTextBoxColumn2.FormatInfo = null;
            this.dataGridTextBoxColumn2.HeaderText = "Title";
            this.dataGridTextBoxColumn2.MappingName = "Title";
            this.dataGridTextBoxColumn2.Width = 180;
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.dataGrid1});
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.dataset1)).EndInit();
            this.ResumeLayout(false);

        }
                #endregion

        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.sqlDataAdapter1.Fill(this.dataset1);
        }
    }
}

5.Windows.Forms でのデータバインディング

前の4章のステップ1〜8までを同様に作ります。

9. 次に Form に2つの Button, 1つのTextBox を次のように貼り付けます。
この TextBox のプロパティで 下の図のように DataBindings プロパティで、
Tag に Books の ID, Text に Books のTitle を選択します。
Image

10. 次に 上のボタンのイベントハンドラに、次のように実装します。
BindingContext[データセット、テーブル名].Position で、テーブルのどのポジションを
表示するのかバインディングコンテキストの位置を指定します。
この値を変えることによって、レコードを移動することができるようになります。

private void button1_Click(object sender, System.EventArgs e)
{
    this.BindingContext[this.dataset11, "Books"].Position--;
}

private void button2_Click_1(object sender, System.EventArgs e)
{
    this.BindingContext[this.dataset11, "Books"].Position++;
}
11. これでコンパイル、実行すると、次のようなデータベースの表示ができます。
この << と >> ボタンを押すことにより、レコードを移動することができます。
Image

5−1.Windows.Forms でのデータバインディングのソースコード

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WebDB2
{
    /// <summary>
    /// Form1 の概要の説明です。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
        private System.Data.SqlClient.SqlCommand sqlInsertCommand1;
        private System.Data.SqlClient.SqlCommand sqlUpdateCommand1;
        private System.Data.SqlClient.SqlCommand sqlDeleteCommand1;
        private System.Data.SqlClient.SqlConnection sqlConnection1;
        private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
        private WebDB2.Dataset1 dataset11;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        /// <summary>
        /// 必要なデザイナ変数です。
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            //
            // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
            //
        }

        /// <summary>
        /// 使用されているリソースに後処理を実行します。
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

                #region Windows Form Designer generated code
        /// <summary>
        /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディタで変更しないでください。
        /// </summary>
        private void InitializeComponent()
        {
            this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
            this.sqlInsertCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlUpdateCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlDeleteCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
            this.dataset11 = new WebDB2.Dataset1();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            ((System.ComponentModel.ISupportInitialize)(this.dataset11)).BeginInit();
            this.SuspendLayout();
            // 
            // sqlSelectCommand1
            // 
            this.sqlSelectCommand1.CommandText = "SELECT ID, Title FROM Books";
            this.sqlSelectCommand1.Connection = this.sqlConnection1;
            // 
            // sqlConnection1
            // 
            this.sqlConnection1.ConnectionString = "data source=UCHUKAMEN\\VSdotNET;initial catalog=test;integrated security=SSPI;work" +
                "station id=UCHUKAMEN;packet size=4096";
            // 
            // sqlInsertCommand1
            // 
            this.sqlInsertCommand1.CommandText = "INSERT INTO Books(ID, Title) VALUES (@ID, @Title); SELECT ID, Title FROM Books WH" +
                "ERE (ID = @ID)";
            this.sqlInsertCommand1.Connection = this.sqlConnection1;
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@ID", System.Data.SqlDbType.Int, 4, "ID"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Title", System.Data.SqlDbType.NVarChar, 100, "Title"));
            // 
            // sqlUpdateCommand1
            // 
            this.sqlUpdateCommand1.CommandText = "UPDATE Books SET ID = @ID, Title = @Title WHERE (ID = @Original_ID) AND (Title = " +
                "@Original_Title); SELECT ID, Title FROM Books WHERE (ID = @ID)";
            this.sqlUpdateCommand1.Connection = this.sqlConnection1;
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@ID", System.Data.SqlDbType.Int, 4, "ID"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Title", System.Data.SqlDbType.NVarChar, 100, "Title"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_ID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "ID", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_Title", System.Data.SqlDbType.NVarChar, 100, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "Title", System.Data.DataRowVersion.Original, null));
            // 
            // sqlDeleteCommand1
            // 
            this.sqlDeleteCommand1.CommandText = "DELETE FROM Books WHERE (ID = @Original_ID) AND (Title = @Original_Title)";
            this.sqlDeleteCommand1.Connection = this.sqlConnection1;
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_ID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "ID", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter(
            "@Original_Title", System.Data.SqlDbType.NVarChar, 100, System.Data.ParameterDirection.Input, false, 
            ((System.Byte)(0)), ((System.Byte)(0)), "Title", System.Data.DataRowVersion.Original, null));
            // 
            // sqlDataAdapter1
            // 
            this.sqlDataAdapter1.DeleteCommand = this.sqlDeleteCommand1;
            this.sqlDataAdapter1.InsertCommand = this.sqlInsertCommand1;
            this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
            this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
            new System.Data.Common.DataTableMapping("Table", "Books", new System.Data.Common.DataColumnMapping[] {
            new System.Data.Common.DataColumnMapping("ID", "ID"),
            new System.Data.Common.DataColumnMapping("Title", "Title")})});
            this.sqlDataAdapter1.UpdateCommand = this.sqlUpdateCommand1;
            // 
            // dataset11
            // 
            this.dataset11.DataSetName = "Dataset1";
            this.dataset11.Locale = new System.Globalization.CultureInfo("en-US");
            this.dataset11.Namespace = "http://tempuri.org/Dataset1.xsd";
            // 
            // textBox1
            // 
            this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dataset11, "Books.Title"));
            this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.dataset11, "Books.ID"));
            this.textBox1.Location = new System.Drawing.Point(64, 16);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(248, 19);
            this.textBox1.TabIndex = 3;
            this.textBox1.Text = "textBox1";
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(8, 16);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(40, 23);
            this.button1.TabIndex = 4;
            this.button1.Text = "<<";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(328, 16);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(40, 23);
            this.button2.TabIndex = 5;
            this.button2.Text = ">>";
            this.button2.Click += new System.EventHandler(this.button2_Click_1);
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
            this.ClientSize = new System.Drawing.Size(376, 54);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.button2,
                                                                          this.button1,
                                                                          this.textBox1});
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataset11)).EndInit();
            this.ResumeLayout(false);

        }
                #endregion

        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.sqlDataAdapter1.Fill(this.dataset11);
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            this.BindingContext[this.dataset11, "Books"].Position--;
        }

        private void button2_Click_1(object sender, System.EventArgs e)
        {
            this.BindingContext[this.dataset11, "Books"].Position++;
        }
    }
}


日付修正履歴
2002/5/28初期バージョン作成
2002/12/8改訂
2003/7/21改訂