株式会社イーブ|未経験・転職の方も就職可能。Javaプログラマー育成のエキスパート

HOMEJAVA技術者育成システム開発求人情報個人情報保護

今週の育成現場便り(12/17~12/21)

トップページ > システム開発 > 育成現場便り > 今週の育成現場便り(12/17~12/21)

今年も残すところ、後10日となってしまいました。
そろそろ年賀状を書かないといけないので、今週末の3連休で何とかしたいと思っています。


今週も引き続きOJTの社内プロジェクト開発を行っていました。
製造期間は今月一杯ですが、なんとか間に合いそうな雰囲気です。
このまま何も問題なく年を越せるように頑張りたいです。


今、行っている開発はDBにPostgreSQL8.1を使って開発をしています。
今回、画像ファイルをテーブルに挿入しようということになったので、画像登録のサンプルをここに残しておこうと思います。


テーブルはこんな感じです。



CREATE TABLE image
(
    id int4 NOT NULL,
    name text NOT NULL, -- 画像名
    data bytea NOT NULL, -- 画像データ
    CONSTRAINT pk_image PRIMARY KEY (id)
)


画像登録サンプル


import java.sql.Connection;
import java.sql.Statement;


import javax.naming.InitialContext;
import javax.sql.DataSource;


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;


public void insertImg(FileItem item) {


    // DB接続用
    Connection con = null;
    PreparedStatement stmt = null;


    try {
        // DataSourceを使用しています
        InitialContext ic = new InitialContext();
        DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/postgres");
        con = ds.getConnection();


        // AutoCommit解除
        con.setAutoCommit(false);


        // 画像登録用SQL
        String sql = "insert into image values(?,?,?)";


        stmt = con.prepareStatement(sql);


        // パラメータ設定
        stmt.setInt(1,1);
        stmt.setString(2,"image");
        stmt.setBinaryStream(3,item.getInputStream(), (int)item.getSize());


        // SQL実行
        stmt.executeUpdate();


        // コミット
        con.commit();


        // AutoCommit設定
        con.setAutoCommit(true);
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        //切断
        try{stmt.close();} catch(Exception e){}
        try{con.close(); } catch(Exception e){}
    }
}


PostgreSQLのJDBCドライバの制約で、必ずAutoCommitモードをオフにしなければならないようです。
今回はbytea型を使用しましたが、PostgreSQLにはoid型もあるので、興味がある方はそちらも試してみてはいかがでしょうか。


以上、今週の育成現場便りでした。


[育成現場便り]内の前後の記事
今週の育成現場便り
→ 今週の育成現場便り(12/17~12/21)
今週の育成現場便り(12/10~12/14)


■更新日時での前後の記事
#4 指差し確認!!
→ 今週の育成現場便り(12/17~12/21)
12月21日 お天気