いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Firebirdへの接続サンプル(DataSet系)

DataSetを用いたサンプルです。
DataSetを使うとなるとGUIの方が見栄えがいいのでwinexeにしてます。
手で直接ゴリゴリかいてもこれくらいの量に治まるのは凄い楽ですね。

// vim:set ts=4 sw=4 et ws is nowrap ft=cs:
using System;
using System.Data;
using System.Windows.Forms;
using FirebirdSql.Data.FirebirdClient;

namespace Gsf.Samples.CSharp{

    class FirebirdDataSetSample : Form{

        const string _connectionString
                 = "DataSource=localhost;Database=test_db;User=test;Password=xxxx;Dialect=3;Character Set=SJIS_0208";

        const string _sql = "select id, name from category";

        DataSet       _ds;
        FbDataAdapter _da;

        FirebirdDataSetSample(){
            InitializeComponent();
        }

        void InitializeComponent(){
            Text  = "Firebird DataSet Sample.";
            Width = 400;

            TableLayoutPanel table = new TableLayoutPanel();
            table.ColumnCount      = 1;
            table.RowCount         = 1;
            table.Dock             = DockStyle.Fill;
            Controls.Add(table);

            //
            // DataAdapterおよびDataSetの構築.
            //
            _da = new FbDataAdapter(_sql, _connectionString);
            _da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            new FbCommandBuilder(_da);
            _ds = new DataSet();
            // どのテーブルのデータをFillするのか指定すること。
            _da.Fill(_ds, "category");

            //
            // BindingSource
            //
            BindingSource bs = new BindingSource();
            // DataMemberを指定しないとBindingNavigatorが機能しない
            bs.DataMember    = "category";
            bs.DataSource    = _ds;

            //
            // BindingNavigator
            //
            BindingNavigator bn = new BindingNavigator();
            bn.BindingSource = bs;
            bn.AddStandardItems();

            ToolStripButton b = new ToolStripButton();
            b.Text            = "Save(&S)";
            b.Click          += delegate(object sender, EventArgs e){
                _da.Update(_ds, "category");
            };
            bn.Items.AddRange(new ToolStripItem[]{
                 new ToolStripSeparator()
                ,b
                ,new ToolStripSeparator()
            });

            bn.Dock = DockStyle.Top;
            table.Controls.Add(bn);

            //
            // DataGridView
            //
            DataGridView gv = new DataGridView();
            gv.Name         = "_gv";
            gv.Dock         = DockStyle.Fill;
            gv.DataSource   = bs;

            table.Controls.Add(gv);

        }

        [STAThread]
        static void Main(){
            Application.EnableVisualStyles();
            Application.Run(new FirebirdDataSetSample());
        }
    }
}


================================
過去の記事については、以下のページからご参照下さい。