atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
c-note@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
c-note@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
c-note@wiki
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • c-note@wiki
  • Microsoft Silverlight
  • DomainServiceClass_InsertBinary

c-note@wiki

DomainServiceClass_InsertBinary

最終更新:2012年02月11日 21:12

Bot(ページ名リンク)

- view
メンバー限定 登録/ログイン

Domain Service Classを利用してコードからデータベースにバイナリデータを追加する



◇事前に下記の内容を見ておくと良いでしょう。
  • MySQL
  • ADO.NET Entity Data Modelの作成
  • Web Serviceの作成

◇ちょっと長くなってしまったので、そのうち分けるかも。

  • Domain Service Classを利用してコードからデータベースにバイナリデータを追加する
    • 1.画面の作成
    • 2.ボタンのクリックイベントの追加(1)
    • 3.ボタンのクリックイベントの追加(2)
    • 4.ファイルを開く処理のコーディング(1)
    • 5.ファイルを開く処理のコーディング(2)
    • 6.ファイル(バイナリ)をデータベースに登録する処理のコーディング(1)
    • 7.ファイル(バイナリ)をデータベースに登録する処理のコーディング(2)
    • 8.事前のデータベースの確認(1)
    • 9.事前のデータベースの確認(2)
    • 10.アプリケーションの実行(1)
    • 11.アプリケーションの実行(2)
    • 12.アプリケーションの実行(3)
    • 13.アプリケーションの実行(4)
    • 14.登録後のデータベースを確認(1)
    • 15.登録後のデータベースを確認(2)
    • 16.データベースからファイルを取り出して確認(1)
    • 17.データベースからファイルを取り出して確認(2)
    • 18.データベースからファイルを取り出して確認(3)
    • 19.おまけ ―やってはいけない確認方法(1)
    • 20.おまけ ―やってはいけない確認方法(2)

戻る


1.画面の作成

コントロールを配置して画面から値を設定できるようにします。
また、ファイルをデータベースに登録するので、ファイルを開くためのボタンも用意。
ファイル名はプログラムで取得するようにするので、「txtFileName」のプロパティで、「その他」>>「IsReadOnly」にチェックを入れます。
今回は、下記のようにしてみました。

コントロール 名前 オプション 概要
Label lblID - ただのラベル
Label lblFileName - ただのラベル
TextBox txtID - カラムidの値を入力
TextBox txtFileName IsReadOnly カラムfilenameの値,ファイル名は自動取得
Button btnOpenFile - ファイルを開く処理
Button btnInsert - データをデータベースに追加する処理




2.ボタンのクリックイベントの追加(1)

ボタン「btnOpenFile」と「btnInsert」について、各々ダブルクリックして、ボタンのクリックイベントを追加します。




3.ボタンのクリックイベントの追加(2)

クリックイベントが追加されたコードはこんな感じ。




4.ファイルを開く処理のコーディング(1)

まず、ファイルを開くダイアログを使ってファイルを開く処理を記述していきます。
「btnOpenFile」と「btnInsert」の両方のクリックイベントでファイルデータを扱えるように、ファイルデータを保持するメンバー変数として、
System.IO.Stream m_stream;
を記述します。




5.ファイルを開く処理のコーディング(2)

「btnOpenFile」のクリックイベントにファイルを開く処理を記述。

  1. インスタンス準備
  2. ファイルを開くダイアログの準備
  3. ファイルを開くダイアログを表示(ここでユーザーがデータベースに登録するファイルを選択する)
  4. ファイルを開いてファイルのデータと名前を取得

という流れになります。
実際のコードはこんな感じ。

// インスタンス準備
OpenFileDialog ofd = new OpenFileDialog();

// オプション設定
ofd.Filter = "All Files (*.*)|*.*"; // 全てのファイル
ofd.FilterIndex = 1; // フィルタは1番目を選択(インデックス番号は1~)
ofd.Multiselect = false; // 選択可能なファイルは1つだけ

// ここでファイルを開くダイアログが画面で表示される
// ユーザーが操作した結果を格納する
bool? bOK = ofd.ShowDialog();

// ダイアログの結果がOKだった場合
if (bOK == true)
{
    // ファイルを開いてStreamに格納
    // 後でファイルを閉じる必要がある
    m_stream = ofd.File.OpenRead();

    // ファイル名を取得してTextBoxに格納
    this.txtFileName.Text = ofd.File.Name;
}




6.ファイル(バイナリ)をデータベースに登録する処理のコーディング(1)

つづいて、データベースに追加する処理を記述します。
データベースにアクセスするために、Domain Service Classを利用できるように、インポートを行います。
これは、ADO.NET Entity Data Modelの作成とか、Web Serviceの作成とかで作成したものを利用します。
using Connect[[MySQL]].Web;
と記述します。




7.ファイル(バイナリ)をデータベースに登録する処理のコーディング(2)

「btnInsert」のクリックイベントを記述します。

  1. インスタンス準備
  2. テーブルにデータを格納
  3. データベースに追加
  4. コミット

という流れが基本になりますが、ファイルをデータベースに登録する場合、バイト配列形式にデータ変換する必要があるので、最初に行います。
また、ファイルが開きっぱなしなので、最後に閉じてあげます。
ということを考慮するとコードはこんな感じ。

// ファイルが開いていたら?
if (m_stream.Length > 0)
{
    // Stream形式のファイルデータをバイト配列形式のデータに変換する
    int len = (int)m_stream.Length;
    byte[] data = new byte[len];
    m_stream.Read(data, 0, len);

    // DBアクセスとテーブルのインスタンスを用意
    ConnectMySQL.Web.DomainServiceClass dsc = new ConnectMySQL.Web.DomainServiceClass();
    ConnectMySQL.Web.table2 t2 = new ConnectMySQL.Web.table2();

    // テーブルにデータを格納
    t2.id = int.Parse(txtID.Text);
    t2.filename = txtFileName.Text;
    t2.filedata = data;

    // データベースに追加
    // その前に既存データをチェックした方が良いでしょう
    dsc.table2s.Add(t2);

    // コミット
    dsc.SubmitChanges();

    // ファイルを閉じる
    // いろいろな操作を考えると本当はここ以外でもファイルを閉じるが必要かと
    m_stream.Close();
}




8.事前のデータベースの確認(1)

コーディングが終わったら、MySQL Workbenchを使って現在のテーブルを確認しましょう。
MySQL Workbenchでデータベースを開いたら、対象とするテーブルで右クリックメニューを開き、「Edit Table Data」をクリック。




9.事前のデータベースの確認(2)

表でテーブルの中身を確認することができます。
現在は空ですね。




10.アプリケーションの実行(1)

では、作成したアプリをビルドして実行してみます。




11.アプリケーションの実行(2)

「ID」に適当な値を入力して、「Open File」ボタンをクリック。
今回「ID」には、
1
を入力しました。




12.アプリケーションの実行(3)

ファイルを開くダイアログが表示されます。
適当なファイルを選択して開きます。
とりあえず画像ファイルを開いてみます。




13.アプリケーションの実行(4)

「File Name」に開いたファイル名が表示されていることが確認できます。
続いて「Insert」ボタンをクリック。
これでファイルデータなどがデータベースに追加されたはずです。




14.登録後のデータベースを確認(1)

再び、MySQL Workbenchに戻って確認してみましょう。
更新ボタン(赤枠でかこってあるボタン)をクリックすると表示が更新されます。




15.登録後のデータベースを確認(2)

先ほど開いたファイルが登録されています。
ファイルデータ自体は、言葉で表現できないので「BLOB」という表記になっています。




16.データベースからファイルを取り出して確認(1)

追加したファイルデータは本当に大丈夫か?という確認をしたいので、データベースから取り出してみましょう。
「BLOB」となっている所で、右クリックメニューを表示して、「Save Value To File」をクリックします。




17.データベースからファイルを取り出して確認(2)

ファイル名に拡張子も付けて保存します。




18.データベースからファイルを取り出して確認(3)

保存したフォルダを確認すると、確かに大丈夫そうだということが確認できます。




19.おまけ ―やってはいけない確認方法(1)

データベースに何か登録したときの確認方法として、コマンドラインが基本になると思いますが、ファイルを登録した場合はやめた方が無難でしょう。
へたにselect文なんかを実行してしまうと……




20.おまけ ―やってはいけない確認方法(2)

登録したバイナリデータがダラダラ表示されて大変なことに。



戻る

「DomainServiceClass_InsertBinary」をウィキ内検索
LINE
シェア
Tweet
c-note@wiki
記事メニュー

メニュー

  • トップページ
  • Microsoft Silverlight
  • MySQL
  • Oracle VM VirtualBox
  • PT1/PT2
  • PV4
  • Shuttle XH61
  • VOCALOID
  • Windows
  • YouTube
  • コマンドプロンプト
  • リンク



更新履歴

取得中です。



リンク

  • @wiki
  • @wikiご利用ガイド





前月 翌月
日 月 火 水 木 金 土

2025-05-29 14:28:55 (Thu)




今日: -
昨日: -
合計: -



ここを編集

記事メニュー2


ここを編集
人気記事ランキング
  1. Oracle VM VirtualBox/FreeNAS 0.7.5
  2. プラグイン/人気商品一覧
  3. コマンドプロンプト
  4. プラグイン
もっと見る
最近更新されたページ
  • 4066日前

    右メニュー
  • 4066日前

    メニュー
  • 4066日前

    トップページ
  • 4519日前

    シールをはがすページ
  • 4623日前

    バナー
  • 4624日前

    YouTube
  • 4658日前

    Windows
  • 4735日前

    メモ
  • 4741日前

    Shuttle XH61/トラブル編
  • 4743日前

    Shuttle XH61
もっと見る
人気記事ランキング
  1. Oracle VM VirtualBox/FreeNAS 0.7.5
  2. プラグイン/人気商品一覧
  3. コマンドプロンプト
  4. プラグイン
もっと見る
最近更新されたページ
  • 4066日前

    右メニュー
  • 4066日前

    メニュー
  • 4066日前

    トップページ
  • 4519日前

    シールをはがすページ
  • 4623日前

    バナー
  • 4624日前

    YouTube
  • 4658日前

    Windows
  • 4735日前

    メモ
  • 4741日前

    Shuttle XH61/トラブル編
  • 4743日前

    Shuttle XH61
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. R.E.P.O. 日本語解説Wiki
  2. VCR GTA3まとめウィキ
  3. ガンダムGQuuuuuuX 乃木坂46部@wiki
  4. SYNDUALITY Echo of Ada 攻略 ウィキ
  5. シュガードール情報まとめウィキ
  6. ありふれた職業で世界最強 リベリオンソウル @ ウィキ
  7. ドタバタ王子くん攻略サイト
  8. STAR WARS ジェダイ:サバイバー攻略 @ ウィキ
  9. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  10. パズル&コンクエスト(Puzzles&Conquest)攻略Wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  6. 検索してはいけない言葉 @ ウィキ
  7. 発車メロディーwiki
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. SDガンダム ジージェネレーションクロスレイズ 攻略Wiki
  10. oblivion xbox360 Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 無馬 かな - ストグラ まとめ @ウィキ
  3. Back Alley - ストグラ まとめ @ウィキ
  4. 鬼野 ねね - ストグラ まとめ @ウィキ
  5. Famos Gray - ストグラ まとめ @ウィキ
  6. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  7. 甘依 モカ - ストグラ まとめ @ウィキ
  8. 鱈 タラオ - ストグラ まとめ @ウィキ
  9. FadeGate - ストグラ まとめ @ウィキ
  10. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.