メモ – JDBCでBLOBの読み書きを行う。

1月 1, 2003 · Posted in その他 · Comment 

テーブル

blob_testテーブルを作成(実験ではOracleを利用)

create table blob_test(
  id  char(1) primary key,
  obj blob
);

ソースコード

insert

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class BlobInsert{
    public static void main(String[] args) throws Exception{
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con = DriverManager.getConnection(
                         "jdbc:oracle:thin:@127.0.0.1:1521:sample",
                         "user",
                         "pass");

        File file = new File("c:\\blob.txt");
        String sql = "insert into blob_test(id, obj)VALUES('1', ?)";
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setBinaryStream(1, new FileInputStream(file), (int)file.length());
        int result = stmt.executeUpdate();

        stmt.close();
    }
}

select

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class BlobRead{
    public static void main(String[] args) throws Exception{
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con = DriverManager.getConnection(
                         "jdbc:oracle:thin:@127.0.0.1:1521:sample",
                         "user",
                         "pass");

        Statement state = con.createStatement();
        String sql = "select * from blob_test";
        boolean result = state.execute(sql);
        ResultSet rs = state.getResultSet();
        while(rs.next()) {
            String id = rs.getString(1);
            Blob blob = rs.getBlob(2);
            InputStream in = blob.getBinaryStream();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            int bytes;
            byte b[] = new byte[4096];
            while ((bytes = in.read(b)) != -1){
                baos.write(b, 0, bytes);
            }
            System.out.println(id + ":" + baos.toString());
        }
        con.close();
    }
}

メモ – native2ascii

1月 1, 2003 · Posted in その他 · Comment 

概要

native2asciiはsunのSDKに付属しているコマンドベースのツール。
このツールを利用すると、OSネイティブのファイルをUnicodeのAsciiファイルに変換することができる。

設定ファイルなどに日本語を含める場合、native2asciiでUnicodeに変換しておくことで、文字化けを回避することができる。

ツールの本体は、%JAVA_HOME%\bin\native2ascii.exe

ネイティブテキスト→ASCII変換

コマンドラインで以下の書式にしたがって入力する。

> native2ascii [変換前のファイル名(ファイルパス)] [変換後のファイル名(ファイルパス)]

a.txt

てすと。

native2ascii実行

native2ascii a.txt b.txt

b.txt

\u3066\u3059\u3068\u3002

ASCII→ネイティブテキスト変換

コマンドラインで以下の書式にしたがって入力する。

> native2ascii -reverse [変換前のファイル名(ファイルパス)] [変換後のファイル名(ファイルパス)]

b.txt

\u3066\u3059\u3068\u3002

native2ascii実行

native2ascii -reverse b.txt c.txt

c.txt

てすと。

メモ – POJO(Plain Old Java Object)

1月 1, 2003 · Posted in その他 · Comment 

POJO(Plain Old Java Object)

POJOとは普通のJavaオブジェクトのことである。
POJOは、JavaBeanやEJBのEntityBean、SessionBeanなどのように、特定の仕様や特定のフレームワークが提供しているインタフェースに依存しない。

この言葉はPOJOを利用することの重要性を広めるために、MartinFowler, RebeccaParsons, JoshMacKenzie達によって生み出された。

次ページへ »