人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

上司から「データベースに画像を入れろ」と言われてます。

画像データって、どうやって入れるんですか? Insert文では入りませんよね・・・?

やるだけ面倒なんじゃないかと思いますが・・・

やったことある型、方法を知ってる方、
参考URLなど、アドバイスお願いします。

OracleかSQLServerだとうれしいですが、
あなたが得意なものでお願いします。

●質問者: MASHMASH
●カテゴリ:ウェブ制作
✍キーワード:Oracle SQLServer URL あなた とある
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

http://www.tpics.co.jp/htm/image.htm

画像データについて

Accessと連携しないと難しいですね。

もしくは 画像のファイル名だけを入れるという手段もあると思います。

◎質問者からの返答

ありがとうございます。

実は、これまでファイル名だけを入れるやり方だったのですが、「入るんなら画像も入れよう」という感じで調査中です。


2 ● kn1967
●20ポイント

AccessやFileMakerのような物であれば画像を内包してしまうことも可能ですが、それをするとファイルが馬鹿デカくなってしまって、下手をすると破損しちゃいますよね。

OracleとかSELServerってことはフロントエンドはAccessを用いるとかVBなどでインターーフェース作ってらっしゃるのですよね?

だとしたら、テーブルのほうには画像のファイル名だけを持たせておいて、画像は画像フォルダに保存っていう方法でよろしいのではないでしょうか?

◎質問者からの返答

やっぱファイル名だけですかね。

その方がラクですよね。

・・・ここだけの話、WebアプリでフロントはFlashです(!)


3 ● kacchan6
●30ポイント

使用言語のデータベース操作APIによりますが、

通常プレペアードのSQLを使用します。

SQLServerですと、Image型のカラムになります。

create table test(id int,img image)

下記のようなSQLを作って、API経由で

?に画像のバイト列をインサートすることにより

可能になります。

insert into test(id,img) values (1,?)

データベースがプレペアードのSQLに対応している必要があります。

Javaで行うのであれば、java.sql.PreparedStatementを参照してください。

◎質問者からの返答

ありがとうございます。

なるほど、画像のバイト列・・・つまりは、そのままデータをテキスト化してInsert文するわけですね。


4 ● wolfy_mk
●30ポイント

いえInsert文で入ります。

私はMySQLを使っているのでそちらの方法を書いておきますね。

まず画像を入れるフィールドの型は「MEDIUMBLOB」というタイプにしています。

PHPでのスクリプトですが、画像を入れる時は

$fp = fopen($_FILES[’f3_img’][’tmp_name’], ”r”);

$f3_img_bin = addslashes(fread($fp, $_FILES[’f3_img’][’size’]));

fclose($fp);

のようにして$f3_img_binを直接Insertしています。

使い方によってはDBの中に画像を入れるというのは有効かと思います。

私は確認画面に表示させる時に一旦テンポラリテーブルに画像をInsertしそれを表示するようにしています。

そうするとサーバー内部に不要な画像データが溜まりませんしスッキリします。

こんな感じでよろしいですか?

◎質問者からの返答

なるほど、ありがとうございます。

LOB型を使うんですね。Oracleにもありますね。


5 ● yoichiro
●30ポイント

http://www.iceprobe.net/oraorasql/sql_datakata.html

画像データだと,俗に言う「バイナリデータ」ですよね。特にOracleの場合では,バイナリデータの格納には「LONG RAW」型または「BLOB」型を使えばよろしいかと思います。

上記の型の場合は,Javaでの話ですけど,SQL文でどうのこうのというよりも,JDBCを使ったプログラム内で,InputStreamおよびOutputStreamクラスを使ったストリームをドライバに作ってもらって,それに対してバイナリデータを流し込んだり取得したり,というやり方になります。

ちなみに,データベース内に画像データなどもそのまま入れることができれば,そのシステムが扱う情報のバックアップなども,exportコマンドなどで一発で実現できるなどのメリットも出てきますので,悪いことではない(運用を考えるとメリットのほうが大きい)と思います。

ご参考になれば幸いです。ではでは。

http://www63.tok2.com/home2/jd4/BLOBbasics.html

JDBC プログラミングの基本 (BLOB の扱い方の基本)

◎質問者からの返答

リンク参考になりました。

バックアップが一発というのはいいですね。

やりかたも、ストリーム(文字列?)にして、

Insert文に組み込むんですね。昔BASP21で

アップロードするときにやったのと同じ感じですね・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ