ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
BLOBデータの登録
スポンサード リンク

●BLOBデータの登録方法は、

(1) 新規レコードをinsertする。
       insert時にBLOBカラムは、empty_blob()関数で初期化する。

(2) insertした新規レコードを、for update句を使用して、ロックを取得してselectする。

(3) selectしたBLOBカラムのロケータから、OutputStreamを取得する。

(4) OutputStreamにBLOBデータを出力する。

(5) コミットする。

例1) 表「blob_sample」の列「blob_data」にバイナリデータファイル「TEST.BMP」をinsertする。
import java.io.*;
import java.sql.*;
import oracle.jdbc.driver.*;


public class BOLUpdate {

  public static void main(String args[]) throws SQLException {


    Connection con = null;
    Statement stm = null;
    ResultSet rs = null;


    try {
      DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
      con = DriverManager.getConnection(
                     "jdbc:oracle:thin:@127.0.0.1:1521:ORCL","test","test");

      // 自動コミットを無効にする。
      con.setAutoCommit(false);

      stm = con.createStatement();
      // 新規レコードをinsert。blod_dataは、empty_blob()を使用して初期化する。
      stm.executeUpdate("insert into blob_sample values('B01',empty_blob())");

      // insertしたレコードをselectする。ロックを掛けるので、for updateを使用する。
      rs = stm.executeQuery(
         "select blob_id,blob_data from blob_sample where blob_id = 'B01' for update");

      rs.next();
      // 列「blob_data」のロケータからOutputStreamを取得する。
      oracle.sql.BLOB bmp = ((OracleResultSet)rs).getBLOB("blob_data");
      OutputStream outStream = bmp.getBinaryOutputStream();

      // バイナリデータサイズを取得する
      int size = bmp.getBufferSize();
char [] buffer = new char[size];
// DBにinsertするバイナリファイル「TEST.BMP」をオープン File f = new File("TEST.BMP"); FileInputStream inStream = new FileInputStream(f); int length = -1; while ((length = inStream.read(buffer)) != -1) { // 読み込んだバイナリファイルを列「blob_data」に書き込む outStream.write(buffer,0,length); } inStream.close(); outStream.close(); // コミット con.commit(); } catch (Exception ex) { // 例外発生時はロールバック con.rollback(); } finally { if ( rs != null ) rs.close(); if ( stm != null ) stm.close(); if ( con != null ) con.close(); } } }

スポンサード リンク


BLOBデータの登録
BLOBデータの取得
CLOBデータの登録
CLOBデータの取得

JDBC へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ