JavaでOracleデータベースに画像を挿入する方法|BLOB型を使った手順を解説
Oracleデータベースに画像などのバイナリデータを保存する場合、一般的にBLOB(Binary Large Object)型が使用されます。そのため、あらかじめBLOB型のカラムを持つテーブルを作成しておく必要があります。
Name Null? Type ----------------------------------------- -------- ---------------------------- NAME VARCHAR2(255) IMAGE BLOB
JavaプログラムからOracleデータベースへ画像を挿入するには、以下の手順に従います。
ステップ1:データベースへの接続
データベースへの接続には、DriverManagerクラスのgetConnection()メソッドを使用します。Oracle Express Editionの場合、接続URLは「jdbc:oracle:thin:@localhost:1521/xe」です。このURLと、ユーザー名・パスワードを引数として渡すことでOracleデータベースに接続できます。
String oracleUrl = "jdbc:oracle:thin:@localhost:1521/xe"; Connection con = DriverManager.getConnection(oracleUrl, "user_name", "password");
ステップ2:PreparedStatementの作成
ConnectionインターフェースのprepareStatement()メソッドを使って、PreparedStatementオブジェクトを作成します。引数には、プレースホルダ(?)を含んだINSERT文を渡します。
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTable VALUES(?, ?)");ステップ3:プレースホルダへの値の設定
PreparedStatementインターフェースのセッターメソッドを使って、プレースホルダに値を設定します。メソッドはカラムのデータ型に応じて選択してください。たとえば、VARCHAR型ならsetString()メソッド、INT型ならsetInt()メソッドを使用します。
BLOB型の場合は、setBinaryStream()またはsetBlob()メソッドを使います。いずれのメソッドにも、パラメータインデックスを表す整数値と、InputStreamクラスのオブジェクトを引数として渡します。
pstmt.setString(1, "sample image");
// BLOB型の挿入
InputStream in = new FileInputStream("E:\\images\\cat.jpg");
pstmt.setBlob(2, in);ステップ4:ステートメントの実行
作成したPreparedStatementオブジェクトを、execute()メソッドで実行します。
サンプルコード
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertImageToOracleDB {
public static void main(String args[]) throws Exception {
// ドライバの登録
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// 接続の取得
String oracleUrl = "jdbc:oracle:thin:@localhost:1521/xe";
Connection con = DriverManager.getConnection(oracleUrl, "system", "password");
System.out.println("Oracleデータベースに接続しました.....");
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTable VALUES(?,?)");
pstmt.setString(1, "sample image");
// BLOB型の挿入
InputStream in = new FileInputStream("E:\\images\\cat.jpg");
pstmt.setBlob(2, in);
// ステートメントの実行
pstmt.execute();
System.out.println("レコードを挿入しました");
}
}実行結果
Oracleデータベースに接続しました..... レコードを挿入しました.....
補足:実装時の注意点
実際の開発では、使用後のConnectionやPreparedStatement、InputStreamなどのリソースを確実に解放するため、try-with-resources構文の利用を推奨します。また、Oracle JDBCドライバ(ojdbc.jar)がクラスパスに含まれていないと、ドライバの登録時にClassNotFoundExceptionが発生する点にも注意してください。
-
Javaで画像を左右反転!ミラーイメージ(鏡像)の作成方法を解説
画像を鏡のように左右反転させた「ミラーイメージ」は、Javaの標準ライブラリである ImageIO と BufferedImage を使えば簡単に作成できます。基本的な仕組みはシンプルで、元画像の各ピクセルを読み取り、その位置を水平方向に反転させて新しい画像へ書き込むだけです。ここでは、その具体的な手順とサンプルコードを紹介します。 ミラーイメージを作成する手順 ImageIO.read() メソッドを使用して、対象となる画像を読み込みます。 読み込んだ画像の高さと幅を取得します。 結果を格納するための空の BufferedImage オブジェクトを作成します。 ネストした for ループを
-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列