このページに記載の情報は、2005 年にリリースした PowerGres Plus V2 を対象としています。PowerGres Plus V2 の販売はすでに終了しています。
PowerGres Plus の最新バージョンに関する情報は、製品紹介ページまたは PowerGres 体験記ページを参照してください。
SRA OSS では、Oracle データベースなど他のデータベースから、PostgreSQL や PowerGres へのマイグレーションサービスを提供しています。
詳細は「データベースマイグレーションサービス」のページをご覧ください。
SQL Server マイグレーションの第 1 回目では、.NET アプリケーションを作成するための Visual Studio .NET の環境設定、ADO.NET によるデータアクセスに必要なドライバの設定、その他の基本的な開発環境の準備や使用方法を紹介しました。 今回は、前回用意した環境で、実際にアプリケーションを開発する手順を紹介します。
PowerGres Plus は、SQL Server を使用したアプリケーションの開発と同じ手順で、データベースにアクセスするアプリケーションを簡単に開発することができます。
第 2 回目となる今回は、一般公開されている Microsoft のチュートリアルに沿って、Visual Studio .NET と PowerGres Plus を使用したアプリケーションを開発する手順を紹介します。
Visual Studio .NET を使用すると、GUI でデータベースの操作を行うアプリケーションを簡単に作成することができます。
図 1: Visual Studio .NET での開発の概要
SQL Server と Visual Studio .NET でチュートリアルとして一般に公開されているアプリケーションを PowerGres Plus と Visual Studio .NET で作成します。
作成するプログラムは、個人情報を管理する表「user_info」と、電話番号を管理する表「user_phone」を使用して、それらを画面に表示したり、XML の形式で出力するプログラムです。
最初にデータベースを作成します。 詳細は、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 のライブラリが使用可能になります。
ソリューションエクスプローラから、参照設定 を右クリックして 参照の追加 を選択します。
図 6: npgsql を参照可能にする
Accessibility.dll を選択し、参照 ボタンをクリックします。
図 7: 参照の追加画面
Npgsql.dll を選択します。
図 8: コンポーネントの選択画面
OK ボタンを押すと、npgsql が参照可能になります。
追加したボタンイベントに処理を記述し、プログラムを完成させます。 LoadDB ボタンでは、データベースからデータを読み込み、そのデータを画面に表示し、同時に XML ファイルに書き込みます。 LoadXML ボタンでは、XML ファイルの内容を読み込み、画面に表示します。
using System.Data; using Npgsql; //追加
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}
以下の処理を実装します。
「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」に書き込まれます。
図 10: user.xml
LoadXML ボタンをクリックしたときの表示結果を以下に示します。 以下のように、XML の内容が読み込まれてグリッドコントロールに表示されます。
図 11: 実行画面
今回は、Visual Studio .NET で PowerGres Plus のアプリケーションを開発しました。 npgsql を使用して、ADO.NET インタフェースを利用することで、SQL Server を利用した開発と同じ手順で開発が可能です。 また、サーバエクスプローラなどの機能を利用し、データベースの内容を確認しながらプログラムを作成することができます。
今回作成したプロジェクトは、サンプル (DotNetSample.zip) として体験記と一緒に公開いたしますので、ぜひ参考にしてください。