PowerGres

第 2 回 Visual Studio .NET を使ったアプリケーション開発 – SQL Server マイグレーション

このページに記載の情報は、2005 年にリリースした PowerGres Plus V2 を対象としています。PowerGres Plus V2 の販売はすでに終了しています。

PowerGres Plus の最新バージョンに関する情報は、製品紹介ページまたは PowerGres 体験記ページを参照してください。

SRA OSS では、Oracle データベースなど他のデータベースから、PostgreSQL や PowerGres へのマイグレーションサービスを提供しています。

詳細は「データベースマイグレーションサービス」のページをご覧ください。

第 2 回 Visual Studio .NET を使ったアプリケーション開発 『PowerGres Plus を使用した .NET アプリケーション開発』

はじめに

SQL Server マイグレーションの第 1 回目では、.NET アプリケーションを作成するための Visual Studio .NET の環境設定、ADO.NET によるデータアクセスに必要なドライバの設定、その他の基本的な開発環境の準備や使用方法を紹介しました。 今回は、前回用意した環境で、実際にアプリケーションを開発する手順を紹介します。

PowerGres Plus は、SQL Server を使用したアプリケーションの開発と同じ手順で、データベースにアクセスするアプリケーションを簡単に開発することができます。

第 2 回目となる今回は、一般公開されている Microsoft のチュートリアルに沿って、Visual Studio .NET と PowerGres Plus を使用したアプリケーションを開発する手順を紹介します。

Visual Studio .NET での開発の概要

Visual Studio .NET を使用すると、GUI でデータベースの操作を行うアプリケーションを簡単に作成することができます。

Visual Studio .NET での開発の概要

図 1: Visual Studio .NET での開発の概要

作成するアプリケーション

SQL Server と Visual Studio .NET でチュートリアルとして一般に公開されているアプリケーションを PowerGres Plus と Visual Studio .NET で作成します。

作成するプログラムは、個人情報を管理する表「user_info」と、電話番号を管理する表「user_phone」を使用して、それらを画面に表示したり、XML の形式で出力するプログラムです。

Visual Studio .NET での開発の実践

データベースの準備

最初にデータベースを作成します。 詳細は、PowerGres Plus 体験記 の「PowerGres Plus を使ってみよう 第 1 回」をご覧ください。

データベースの作成

Administrator で、データベースを作成します。

表の定義

プログラムで使用する表を作成します。 以下の DDL 文を使用して作成します。

CREATE TABLE user_info
(
user_id varchar(8) NOT NULL,	
  user_name varchar(10) NOT NULL,
  user_age int2,
  CONSTRAINT user_info_pkey PRIMARY KEY (user_id)
);

CREATE TABLE user_phone
(
  user_id varchar(8) NOT NULL,
  user_phone varchar(13),
  CONSTRAINT pk_user_telephone_user_id PRIMARY KEY (user_id)
);

今回は、Administrator の SQL 文実行で上記の内容を入力して実行します。

表の定義

図 2: 表の定義

データの格納

定義した表にデータを格納します。 以下は、その入力例です。

insert into user_info values (1, 'Ken', '20');
insert into user_info values (2, 'Tom', '25');
insert into user_info values (3, 'Nick', '30');

insert into user_phone values (1, '9010009999');
insert into user_phone values (2, '9010008888');
insert into user_phone values (3, '9010007777');

Administrator の SQL 文実行で上記の内容を入力して実行します。

サーバエクスプローラの設定

サーバエクスプローラの設定を行い、作成したデータベースの内容や、表の内容を参照できるようにします。 データベースの内容を確認しながらアプリケーションを作成することができます。 また、表のデータを確認することもできるので、プログラムの実行確認などがすぐにできます。

サーバエクスプローラを使用するには、ODBC のインストールが必要です。 詳細は、「SQL Server マイグレーション 第 1 回」の「.NET 上での開発の準備」を参照してください。

サーバエクスプローラの設定が完了すると、以下のように Visual Studio .NET 上から、データベースサーバに定義したデータベースの内容や、表のデータを参照することができます。

サーバエクスプローラの設定

図 3: サーバエクスプローラの設定

プロジェクトの作成

ファイル メニューからプロジェクトの新規作成を選択します。 プロジェクトの種類は Visual C# プロジェクト を選択し、テンプレートは Windows アプリケーション を選択します。 次に、プロジェクト名を入力し、OK ボタンをクリックします。

プロジェクトの新規作成

図 4: プロジェクトの新規作成

フォームの作成

フォーム画面に、データベースの読込みを行う LoadDB ボタンと、XML ファイルの読込みを行う LoadXML ボタンを追加します。 さらに、データベースの内容を表示するデータグリッドコントロールと、XML ファイルの内容を表示するデータグリッドコントロールを追加します。

フォームの作成

図 5: フォームの作成

npgsql をプロジェクトで参照可能にする

プログラムの記述を行う前に、インストールした npgsql を設定します。 この作業により、プログラムから npgsql のライブラリが使用可能になります。

ソリューションエクスプローラから、参照設定 を右クリックして 参照の追加 を選択します。

npgsql を参照可能にする

図 6: npgsql を参照可能にする

Accessibility.dll を選択し、参照 ボタンをクリックします。

参照の追加画面

図 7: 参照の追加画面

Npgsql.dll を選択します。

コンポーネントの選択画面

図 8: コンポーネントの選択画面

OK ボタンを押すと、npgsql が参照可能になります。

アプリケーションの記述

追加したボタンイベントに処理を記述し、プログラムを完成させます。 LoadDB ボタンでは、データベースからデータを読み込み、そのデータを画面に表示し、同時に XML ファイルに書き込みます。 LoadXML ボタンでは、XML ファイルの内容を読み込み、画面に表示します。

  1. Form1.cs を開き、NameSpace に Npgsql を追加します。
    using System.Data;
    using Npgsql; //追加
  2. LoadDB ボタンのイベントハンドラを作成します。 以下の処理を実装します。

    NpgsqlDataAdapter から取得したデータをデータセットに格納します。 user_id をキーとして 2 つのテーブルを関連づけし、データを画面のデータグリッドコントロール (Datagrid1) に表示すると同時に、「user.xml」ファイルに書き込みます。

    NpgsqlConnection のパラメタは、ご使用の環境に合わせて変更してください。

    private void button1_Click(object sender, System.EventArgs e)
    {ldelim}
    //接続情報の作成
    NpgsqlConnection  conn = new NpgsqlConnection
    ("Server=192.168.2.197;" + "Port=5430;UserId=jianghy;Password=asdf1234;" + 
    "Database=postgres;");
    
    //接続
    conn.Open();
    
    //データを取得し、DataSet へ格納
    NpgsqlCommand comm1 = new NpgsqlCommand
    ("SELECT * FROM user_info",conn);
    NpgsqlDataAdapter  adp1 = new NpgsqlDataAdapter(comm1);
    NpgsqlCommand comm2 = new NpgsqlCommand
     ("SELECT * FROM user_phone",conn);
    NpgsqlDataAdapter  adp2 = new NpgsqlDataAdapter(comm2);
    DataSet ds = new DataSet() ;
    adp1.Fill(ds,"UserInfo");
    adp2.Fill(ds,"UserPhone");
    
    //2 つの DataSet にリレーションを設定
    DataRelation UserPhoneRel ;
    UserPhoneRel = new DataRelation("UserDetail",
    ds.Tables["UserInfo"].Columns["user_id"],
    ds.Tables["UserPhone"].Columns["user_id"]);
    ds.Relations.Add(UserPhoneRel);
    
    //データベースへの接続を切断
    conn.Close ();
    
    //グリッドコントロールに DataSet を連結
    dataGrid1.DataSource = ds;
    dataGrid1.DataMember="UserInfo";
    
    //DataSet の内容を XMLファイルとして出力
    UserPhoneRel.Nested=true;
    ds.WriteXml("..\\..\\user.xml");
    {rdelim}
  3. LoadXML ボタンのイベントハンドラを作成します。

    以下の処理を実装します。

    「User.xml」ファイルを読み込み、データを画面のデータグリッドコントロール (Datagrid2) に表示します。

    private void button2_Click(object sender, System.EventArgs e)
    {ldelim}
    	DataSet dsXML = new DataSet();
    	dsXML.ReadXml("..\\..\\user.xml");
    
    	dataGrid2.DataSource=dsXML;
    	dataGrid2.DataMember="UserInfo";
    {rdelim}

プログラムの実行

プログラムをビルドし、実行すると作成したフォームが表示されます。

LoadDB ボタンをクリックしたときの実行結果を下図に示します。 左側の「+」マークをクリックすると関連づけした名前が表示され、そこから、関連付けした表の情報が表示されます。

実行画面

図 9: 実行画面

同時に、データベースの内容が以下のように XML ファイル「user.xml」に書き込まれます。

user.xml

図 10: user.xml

LoadXML ボタンをクリックしたときの表示結果を以下に示します。 以下のように、XML の内容が読み込まれてグリッドコントロールに表示されます。

実行画面

図 11: 実行画面

最後に

今回は、Visual Studio .NET で PowerGres Plus のアプリケーションを開発しました。 npgsql を使用して、ADO.NET インタフェースを利用することで、SQL Server を利用した開発と同じ手順で開発が可能です。 また、サーバエクスプローラなどの機能を利用し、データベースの内容を確認しながらプログラムを作成することができます。

今回作成したプロジェクトは、サンプル (DotNetSample.zip) として体験記と一緒に公開いたしますので、ぜひ参考にしてください。

製品・サービスに関するお問い合わせ
03-5979-2701

お問い合せ受付時間 月 - 金 10:00 - 17:00

メールフォームでのお問い合わせ

ページトップへ