Symfoware

Symfowareについての考察blog

DB2 10.5にC#から画像データをBLOB列に登録する

C#からDB2 10.5に接続してみました。
DB2 10.5にC#から.NET Data Providerで接続する

BLOB型の列を作成し、画像データをバイナリで登録してみます。


テーブルの作成



事前にこんなテーブルを作成しておきました。


CREATE TABLE test (image BLOB)






画像データの登録・復元



サンプルはこんな感じになりました。


  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.             var cmd = con.CreateCommand();
  24.             
  25.             cmd.CommandText = @"DELETE FROM test";
  26.             cmd.ExecuteNonQuery();
  27.             
  28.             
  29.             // ファイルの内容をバイト配列に展開
  30.             byte[] bytes = File.ReadAllBytes("Lenna.jpg");
  31.             
  32.             // データ登録
  33.             cmd.CommandText = @"INSERT INTO test (image) VALUES (@image)";
  34.             cmd.Parameters.Add(new DB2Parameter("image", DB2Type.Blob) { Value = bytes });
  35.             cmd.ExecuteNonQuery();
  36.             cmd.Parameters.Clear();
  37.             
  38.             // データを取得し復元
  39.             cmd.CommandText = @"SELECT image FROM test";
  40.             var dataReader = cmd.ExecuteReader();
  41.                         
  42.             while(dataReader.Read()) {
  43.                 
  44.                 // 画像データの復元
  45.                 File.WriteAllBytes("result.jpg", (byte[])dataReader["image"]);
  46.                 
  47.             }
  48.         }
  49.     }
  50. }




result.jpgには、ちゃんと登録したものと同じ画像が復元出来ました。


黒猫SQLで確認した様子がこちら。

365_01.png


右クリックしてBLOBビューアを表示してみると、ちゃんと登録した時の画像が復元されました。

365_02.png
関連記事

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

  1. 2014/03/11(火) 00:36:33|
  2. DB2
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<DB2の管理ツールIBM Data Studio 4.1をUbuntuにインストールする | ホーム | DB2 10.5にC#から.NET Data Providerで接続する>>

コメント

コメントの投稿


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

トラックバック

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