• ベストアンサー

BLOBの設定方法

PreparedStatementを使用してBlob型を持つTBLにInsertしようとしたいのですがBlob型の設定方法がわかりません・・・。 例えば1Mのデータを設定したいときどうすればよいですか? 今はsetBinaryStreamを使用しようと思っているのですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada46
  • ベストアンサー率39% (13/33)
回答No.1

例えば、以下のような感じでしょうか。 PreparedStatement ps = con.prepareStatement("insert into test (id, content) values (?,?)"); ps.setInt(1, 1); ps.setBinaryStream(2, new FileInputStream(filename), -1); ps.executeUpdate(); ps.close();

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • BLOB型について

    Oracle(9.2.0.1.0)のBLOB型フィールドへの画像データの方法を知りたいのですが、どなたか教えて頂けませんでしょうか? よろしくお願いします。

  • Oracle : BLOB型フィールドへのデータ設定方法

    Oracle9iで、 あるテーブルのBLOB型フィールドへバイナリーデータを設定する方法をご教授ください。 とにかく、一回だけ、 ある1レコード(あるいは全レコード同じデータでもかまわない)の1フィールドに何かを設定できればいいので ・オペレーション(手入力)で設定 ・設定するプログラムを作る いずれでも構いません。 利用できるのは ・オブジェクトブラウザ ・Oracle9i標準のツール(sqlplus等) 作成可能なプログラム ・VC++ , VB よろしくお願いします

  • 共通のカラムを持つテーブルの外部キーの設定

    MySQLバージョン4.1.16を使用しています。 2つのテーブル「tbl1」と「tbl2」があり、 それぞれ共通のカラムを別のテーブル「common_tbl」に設定(正規化)し そのcommon_idを「tbl1」と「tbl2」が参照します。 例えば、「tbl2」にデータをinsertする場合に、 まず「common_tbl」からinsertして、そのinsert_idを取得(利用)して 「tbl2」にデータを挿入します。 たぶんこの場合のinsertはこのようなやり方だと思います(あまり自信ないなぁ・・・) 「tbl2」の行を削除した場合に、「common_tbl」の行も自動で削除させたいと思うのですが、 どのように外部キーを設定するのか(どこに設定するのか)が分かりません。 「common_tbl」に「tbl1」のtbl1_idと「tbl2」のtbl2_idを それぞれ持たせるのはたぶん違うと思いますし・・・ この場合の正しいテーブル構成を含めてアドバイスをお願いしたいです。 例: 「tbl2」のtbl2_idが2の行を削除したら、 「common_tbl」のcommon_idが3の行も削除したい(外部キーで自動的に) テーブル「tbl1」 +------+---------+----------+ | tbl1_id| tbl1_col1 |common_id | +------+---------+----------+ |  1  |   値1  |   1    | +------+---------+----------+ テーブル「tbl2」 +------+---------+----------+----------+ | tbl2_id| tbl2_col1 | tbl2_col2 |common_id | +------+---------+----------+----------+ |  1  |   値1  |   値1  |    2   | +------+---------+----------+----------+ |  2  |   値2  |   値2  |    3   | +------+---------+----------+----------+ テーブル「common_tbl」 +----------+---------+----------+ |common_id |   col1  |   col2  | +----------+---------+----------+ |  1     |   値1  |   値1  | +----------+---------+----------+ |  2     |   値2  |   値2  | +----------+---------+----------+ |  3     |   値3  |   値3  | +----------+---------+----------+

    • ベストアンサー
    • MySQL
  • VB.NETにてDB2のBLOB型のデータを取得したい

    質問させてください。 現在、VB.Net2005にてDB2 V5からデータを取得して OracleにInsertしようと試みているのですが、 DB2からBLOB型の列のデータを取得しようとすると、 エラーが発生して取得できず困っています。 BLOB型以外の列に関しては取得できています。 VB.NetからのDB2への接続は、ODBCにて行っています。 デバッグにて、エラーが発生している場所は、 データアダプタでFillメソッドを実行している箇所です。 上記の現象に、お心当りの方はお知恵をお貸し下さい。 よろしくお願いします。

  • BLOB項目追加後のInsert実行エラーとデータサイズ変更方法

    環境はMYSQL 5.0です。 既存のテーブルでたとえば **************************** ○Aテーブル  No INT(5)  Name VARCHAR(5) **************************** 上記のようなテーブルが存在しており、そこに MySQL Query Browserなどのツールを使用し 追加でMEDIUMBLOB型の項目を追加しました。 **************************** ○変更後Aテーブル  No INT(5)  Name VARCHAR(5)  Image MEDIUMBLOB **************************** その後、PG(VB2008)よりjpg画像ファイル登録するため INSERTするとエラーが発生してしまいます。 エラー内容は 「ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near (ここは文字化け) at line 1」 といった感じです。 INSERT実行自体には問題がないため、 一度MYSQL5.0をアンインストール、再インストール後に初めからBLOB型を含んだAテーブルCREATEを行い 再度同じようにPG実行でINSERTによるjpg画像の登録を行ったら 正常登録されました。 このことよりおそらくMYSQLの既存のデータサイズ設定?に問題が あるのかなぁと思っています。 そこで質問なのですが、MYSQLのアンインストールなど行わずに 既存のままテーブルにBLOB型を追加し、データサイズ(Data Length?)を変更する方法をご存じの方いらっしゃいますでしょうか? また、原因自体違う!というのがありましたらご指摘いただきたいです。 複数の場所でこのBLOB追加作業が必要になってきており、困っております。 よろしくお願いいたします。

  • BLOBやCLOBのパフォーマンスを改善したい

    Oracle 10g R2 を使用し、開発を行っていますが、 パフォーマンス改善という壁にぶつかっており、 お助けいただきたいと思いました。 要求定義の段階で、可変長のバイナリデータを扱う必要があり、 テーブル内には BLOB フィールドを用意しております。 レコード件数にすると、全体でおおよそ 500,000 ~ 1,000,000 件に なります。(導入先によって上記範囲内で変動する) データはさらに区分によって判別されるようになっております。 プログラムから投入する SQL 文については、 最適化を行っておりまして、最高のパフォーマンスが得られる であろう構文になっておりますし、テーブルの設計についても、 検索条件となる項目へのインデックス設定を行っています。 現状としてプログラムの中でボトルネックとなっているのは、 BLOB データを Fetch するタイミングなんです。 開発環境は、C#.NET+ODP.NET なんですけど、ミドルウェアは、 oo4o を使った場合でも、Microsoft の Oracle のドライバを 使用したときでも同じ部分でボトルネックになっていました。 ちなみに、BLOB をやめて、CLOB にした場合も、 CLOB データを Fetch する部分がボトルネックになっていました。 テスト段階なのでバイナリデータが 4 KB 未満ですが、 これを VARCHAR2(4000) のフィールドに Base64文字列などで 格納した場合は、LOB データの Fetch はありませんので、 かなり高速な処理が実現できるのですが、実際の運用では、 4 KB を超えるようなバイナリデータが普通に現れてきます。 なので、VARCHAR2 でのデータベース設計ができない状態です。 そもそも、この BLOB フィールドや CLOB フィールドのデータを Fetch する速度を向上させること、というのは可能なのでしょうか? ちなみに、Oracle サーバ側の設定は一切行っておりません。

  • BLOB型項目をSQLの検索条件に指定して検索したいのですが。

    BLOB型の項目を持つTableに対して、SQLのSELECT文でBLOB型項目がNull(未設定)のレコードを抽出したいと思っています。 どのようなSELECT文を組めば良いのでしょうか? 方法がわからず困っています。 御教授下さい。 DBはOracle8.1.6、 OSはWindowsサーバ2003です。よろしくお願いします。

  • BLOB列作成でORA-03001が出ます

    皆様こんにちは。 環境はcompatible = 9.0.0で作成した データベースです。 下記のSQLで表領域を作成し、その表領域を指定して BLOB列を含むテーブルを作成しようとすると、 ORA-03001:実装されていない機能ですエラー が出てしまいます。 create tablespace data_ts datafile 'd:\oracle\oradata\data\data_ts.dbf' size 256M autoextend on next 10M maxsize 1024M extent management local segment space management auto / 原因と対処法をご存知の方がおられましたら お助けください。 よろしくお願いいたします。

  • 別テーブルからselectした値を他のテーブルにinsertしたいのですが、上手くできません

    以下のように行ったのですが、 全ての値が別テーブルにinsertされません。 $sql = "SELECT tbl_A.id, tbl_A.data FROM tbl_A "; $rst = mysql_query( $sql ); while ( $col = mysql_fetch_array( $rst ) ) { $sql = "INSERT INTO tbl_B (          date, id, data ) VALUES ( '" . date( 'Y-m-d' ) . "', '" . mysql_real_escape_string( $col['id'] ) . "', '" . mysql_real_escape_string( $col['data'] ) . "' )"; } このやり方では、テーブル内の1つの値しかinsertされません。 selectされた全ての値をinsertするにはどのようにしたら良いのでしょうか? よろしくお願いします。 DB:mysql5 SP:php5

    • ベストアンサー
    • MySQL
  • MySQLでのバイナリデータ削除方法

    MySQLでのバイナリデータ削除方法 現在、PHPとMySQLでデータベースを作っている初心者です。 MySQLに登録したBLOB型のバイナリデータ(jpeg画像)を削除することはできるのでしょうか。 PHPMyAdminではレコード自体は消せますが、バイナリデータについては編集不可となっています。このフィールドのみ空にすることはできるのでしょうか。 考え方、方法などご教示ください。 上書きでNULLをインサートする??のかとも思うのですが、よくわかりません。 MySQL 5.1.34 PHP 5.2.6

    • ベストアンサー
    • MySQL
このQ&Aのポイント
  • 会社のMicrosoftアカウントはサブスクリプション無しで利用しています。Microsoft Strageは5GB、Outlook.com ストレージは15GBの無料利用ができます。
  • メールの添付ファイルが大きくMicrosoft Strageの容量を超えた場合、Outlook.com ストレージには含まれているのか疑問です。また、同じファイルが両方に保存されているのか削除可能かも知りたいです。
  • 調査範囲では判断できなかったため、詳しい方の情報を求めています。
回答を見る