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


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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/09/29 09:36:54
  • 終了:--

回答(5件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982004/09/29 09:43:22

ポイント20pt

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

画像データについて

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

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

id:MASHMASH

ありがとうございます。

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

2004/09/29 10:53:59
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012004/09/29 09:44:04

ポイント20pt

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

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

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

id:MASHMASH

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

その方がラクですよね。

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

2004/09/29 10:55:57
id:kacchan6 No.3

kacchan6回答回数106ベストアンサー獲得回数02004/09/29 10:07:36

ポイント30pt

使用言語のデータベース操作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を参照してください。

id:MASHMASH

ありがとうございます。

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

2004/09/29 10:57:32
id:wolfy_mk No.4

wolfy_mk回答回数5ベストアンサー獲得回数02004/09/29 10:25:41

ポイント30pt

いえ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しそれを表示するようにしています。

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

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

id:MASHMASH

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

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

2004/09/29 10:59:41
id:yoichiro No.5

yoichiro回答回数10ベストアンサー獲得回数02004/09/29 10:45:41

ポイント30pt

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

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

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

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

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

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

id:MASHMASH

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

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

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

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

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

2004/09/29 11:03:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません