今年も残すところ、後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日 お天気
