目次へ

解答例 - 実習課題1 - 4.ラージオブジェクト

(実習課題1)

以下のプログラムを作成しなさい。

  • 「product_photo」テーブルに画像ファイルを格納するコンソールプログラム。
  • プログラムの引数は、製品番号と画像ファイル名。
  • 格納されたデータが、指定したファイルのデータと同じである事を確認する事。

解答例

▼データベースアクセス用クラスのソース

package com.techscore.jdbc.chapter4.exercise1;
/**
 * ProductPhotoDAO.java
 * TECHSCORE JDBC4章 実習課題1
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.io.FileInputStream;

public class ProductPhotoDAO{
    private PreparedStatement statement = null;
    private Connection conn = null;

    private Connection getConnection() throws SQLException,ClassNotFoundException{
        Class.forName("org.postgresql.Driver");
        conn = DriverManager.getConnection("jdbc:postgresql://dbserver:5432/Training"
                                           ,"postgres"  //ユーザ名
                                           ,"");        //パスワード
        conn.setAutoCommit(false);  //自動コミットモード解除
        return conn;
    }
    
    public void insertImage(int pNum,FileInputStream fin, int length) throws SQLException,ClassNotFoundException{
        conn = getConnection();
        final String sql = "insert into product_photo values(?,?)";
        statement = conn.prepareStatement(sql);
        statement.setInt(1,pNum);
        statement.setBinaryStream(2, fin, length);
        statement.executeUpdate();
        conn.commit();            
    }

    public void finishTransaction() throws SQLException{
        try{
            statement.close();
        }finally{
            if (conn != null){
                conn.close();
            }
        }
    }
}

▼データ挿入測定クラスのソース

package com.techscore.jdbc.chapter4.exercise1;
/**
 * InsertImageData.java
 * TECHSCORE JDBC4章 実習課題1
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;

public class InsertImageData {
    public static void main(String[] args) {
        try {
            ProductPhotoDAO photoDAO = new ProductPhotoDAO();
            int pNum =Integer.parseInt(args[0]);
            String fileName = args[1];
            File file = new File(fileName);
            FileInputStream input = new FileInputStream(file);
            photoDAO.insertImage(pNum,input,(int)file.length());
            input.close();
            photoDAO.finishTransaction();
        }catch(SQLException e){
            e.printStackTrace();
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Usage:java InsertImageData [製品番号] [画像ファイル名]");
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

▼データベースの指定

JDBC 1章 実習課題1を参照


↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp