Symfoware

Symfowareについての考察blog

DB2 10.5にC#から.NET Data Providerで接続する

DB2 10.5 Express-Cをインストールしてみました。
DB2 10.5 Express-CをWindows Server 2012 R2にインストールして外部接続を許可する

Windows 7 32bitからC#で接続してみます。



.NET Data Providerのインストール



DB2 10.5 ODBCドライバーのインストールと接続設定
こちらで「IBM Data Server Driver Package (DS Driver)」をインストールしました。

この時点でODBCドライバに加え、.NET Data Providerもインストールされています。


ドライバの実体はデフォルトで
・C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin\netf20 (.net 4.0未満用)
・C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin\netf40 (.net 4.0以上用)
にインストールされています。




サンプルプログラム



テスト用に、sampleデータベースにこんなテーブルを作成しておきました。


CREATE TABLE test(id int, name varchar(100))




簡単なサンプルプログラムはこんな感じになります。


  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. using System.Collections.Generic;
  5. using IBM.Data.DB2;
  6. public class Sample {
  7.     
  8.     public static void Main() {
  9.         
  10.         // 接続文字列作成
  11.         StringBuilder sb = new StringBuilder();
  12.         sb.Append("Server=192.168.1.104:50000;");
  13.         sb.Append("User Id=Administrator;");
  14.         sb.Append("Password=P@ssw0rd;");
  15.         sb.Append("Database=sample");
  16.         
  17.         string connString = sb.ToString();
  18.         
  19.         using (var con = new DB2Connection(connString)) {
  20.             con.Open();
  21.             
  22.             using(var cmd = con.CreateCommand()) {
  23.                 
  24.                 cmd.CommandText = @"DELETE FROM test";
  25.                 cmd.ExecuteNonQuery();
  26.                 
  27.                 cmd.CommandText = @"INSERT INTO test(id, name) VALUES(1, '登録テスト')";
  28.                 cmd.ExecuteNonQuery();
  29.                 
  30.                 cmd.CommandText = @"SELECT * FROM test WHERE id = 1";
  31.                 var reader = cmd.ExecuteReader();
  32.                 
  33.                 while(reader.Read()) {
  34.                     Console.WriteLine(reader["id"]);
  35.                     Console.WriteLine(reader["name"]);
  36.                 }
  37.             }
  38.         }
  39.     }
  40. }





コンパイルはcsc.exeを使用しました。
コンパイル用のバッチファイルはこんな感じになります。


@echo off
set db2=C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin\netf20\
set csc="C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe"
set opt=/r:"%db2%IBM.Data.DB2.dll" /nologo /out:Sample.exe
%csc% %opt% Sample.cs




ビルドして実行してみます。
そっけないですが、ちゃんとデータの登録と検索が行えました。

364_01.png





プレースフォルダを使用した登録と検索



プレースフォルフォルダを使用して登録や検索を行うよう修正してみます。


  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. using System.Collections.Generic;
  5. using IBM.Data.DB2;
  6. public class Sample {
  7.     
  8.     public static void Main() {
  9.         
  10.         // 接続文字列作成
  11.         StringBuilder sb = new StringBuilder();
  12.         sb.Append("Server=192.168.1.104:50000;");
  13.         sb.Append("User Id=Administrator;");
  14.         sb.Append("Password=P@ssw0rd;");
  15.         sb.Append("Database=sample");
  16.         
  17.         string connString = sb.ToString();
  18.         
  19.         using (var con = new DB2Connection(connString)) {
  20.             con.Open();
  21.             
  22.             using(var cmd = con.CreateCommand()) {
  23.                 
  24.                 cmd.CommandText = @"DELETE FROM test";
  25.                 cmd.ExecuteNonQuery();
  26.                 
  27.                 cmd.CommandText = @"INSERT INTO test(id, name) VALUES(@id, @name)";
  28.                 cmd.Parameters.Add(new DB2Parameter("id", DB2Type.Integer) { Value = 2 });
  29.                 cmd.Parameters.Add(new DB2Parameter("name", DB2Type.VarChar) { Value = "登録テスト" });
  30.                 cmd.ExecuteNonQuery();
  31.                 cmd.Parameters.Clear();
  32.                 
  33.                 cmd.CommandText = @"SELECT * FROM test WHERE id = @id";
  34.                 cmd.Parameters.Add(new DB2Parameter("id", DB2Type.Integer) { Value = 2 });
  35.                 var reader = cmd.ExecuteReader();
  36.                 
  37.                 while(reader.Read()) {
  38.                     Console.WriteLine(reader["id"]);
  39.                     Console.WriteLine(reader["name"]);
  40.                 }
  41.             }
  42.         }
  43.     }
  44. }







DataAdapter



DataAdapterを使用してデータを取得してみます。


  1. using System;
  2. using System.Data;
  3. using System.IO;
  4. using System.Text;
  5. using System.Collections.Generic;
  6. using IBM.Data.DB2;
  7. public class Sample {
  8.     
  9.     public static void Main() {
  10.         
  11.         // 接続文字列作成
  12.         StringBuilder sb = new StringBuilder();
  13.         sb.Append("Server=192.168.1.104:50000;");
  14.         sb.Append("User Id=Administrator;");
  15.         sb.Append("Password=P@ssw0rd;");
  16.         sb.Append("Database=sample");
  17.         
  18.         string connString = sb.ToString();
  19.         
  20.         using (var con = new DB2Connection(connString)) {
  21.             con.Open();
  22.             
  23.             using(var cmd = con.CreateCommand()) {
  24.                 
  25.                 cmd.CommandText = @"DELETE FROM test";
  26.                 cmd.ExecuteNonQuery();
  27.                 
  28.                 cmd.CommandText = @"INSERT INTO test(id, name) VALUES(@id, @name)";
  29.                 cmd.Parameters.Add(new DB2Parameter("id", DB2Type.Integer) { Value = 1 });
  30.                 cmd.Parameters.Add(new DB2Parameter("name", DB2Type.VarChar) { Value = "登録テスト1" });
  31.                 cmd.ExecuteNonQuery();
  32.                 
  33.                 cmd.Parameters["id"].Value = 2;
  34.                 cmd.Parameters["name"].Value = "登録テスト2";
  35.                 cmd.ExecuteNonQuery();
  36.                 cmd.Parameters.Clear();
  37.                 
  38.                 
  39.                 var adapter = new DB2DataAdapter();
  40.                 adapter.SelectCommand = new DB2Command(@"SELECT * FROM test", con);
  41.                 
  42.                 DataSet ds = new DataSet();
  43.                 adapter.Fill(ds);
  44.                 
  45.                 DataTable dt = ds.Tables[0];
  46.                 foreach(DataRow row in dt.Rows) {
  47.                     Console.WriteLine(row["id"]);
  48.                     Console.WriteLine(row["name"]);
  49.                 }
  50.             }
  51.         }
  52.     }
  53. }






【参考URL】

DB2 .NET Data Provider を Visual Studio 2008 で利用する

簡単にできる!OracleからDB2 9.7への移行ステップ: .NETアプリケーション移行
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/03/11(火) 00:17:58|
  2. DB2
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<DB2 10.5にC#から画像データをBLOB列に登録する | ホーム | DB2 10.5 ODBCドライバーのインストールと接続設定>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1328-7db0dfc9
この記事にトラックバックする(FC2ブログユーザー)