JDBCでBLOBデータ型の値をテーブルに挿入する方法|サンプルコード付き
BLOBデータ型とは
BLOB(Binary Large Object)は、画像・音声・動画などのバイナリデータをデータベースに格納するためのデータ型です。MySQLでは、BLOB型のカラムに画像ファイルなどを直接保存することができます。本記事では、JDBCを使ってBLOB型カラムに画像データを挿入する具体的な手順を解説します。
前提条件:テーブル構造
データベースには、以下のような構造を持つ「MyTable」というテーブルがすでに存在しているものとします。
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | image | blob | YES | | NULL | | +-------+--------------+------+-----+---------+-------+
BLOB型に値を挿入するためのPreparedStatementのメソッド
JDBCプログラムでBLOBデータ型のカラムに値を挿入するには、バイナリストリームデータを設定するためのメソッドを使用する必要があります。PreparedStatementインターフェースには、画像をテーブルに挿入するための以下のメソッドが用意されています。
1. setBinaryStream() メソッド
void setBinaryStream(int parameterIndex, InputStream x) メソッドは、指定された入力ストリームのデータ(ファイルの終端まで)を、指定されたインデックスのパラメータ値として設定します。
このメソッドには、以下のバリアントもあります。
void setBinaryStream(int parameterIndex, InputStream x, int length)
void setBinaryStream(int parameterIndex, InputStream x, long length)
2. setBlob() メソッド
void setBlob(int parameterIndex, Blob x) メソッドは、指定されたBlobオブジェクトを、指定されたインデックスのパラメータ値として設定します。
こちらにも、以下のバリアントが用意されています。
void setBlob(int parameterIndex, InputStream inputStream)
void setBlob(int parameterIndex, InputStream inputStream, long length)
BLOBデータ型への値の設定は、これらのメソッドのいずれかを使って行えます。
サンプルコード
以下の例では、setBinaryStream() メソッドを使用して、BLOBデータ型のカラムに画像ファイルの値を設定しています。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertingValueForBlob {
public static void main(String args[]) throws Exception{
//ドライバの登録
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//接続の取得
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Connection established......");
//値の挿入
String query = "INSERT INTO MyTable(Name,image) VALUES (?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setString(1, "sample_image");
FileInputStream fin = new FileInputStream("E:\\images\\cat.jpg");
pstmt.setBinaryStream(2, fin);
pstmt.execute();
System.out.println("Record inserted .....");
}
}実行結果
Connection established...... Record inserted ......
挿入結果の確認
MySQL Workbenchでレコード内のBLOB値を確認すると、以下のように画像が正しく挿入されていることがわかります。

-
JDBCでCLOBデータ型の値をテーブルに挿入する方法【サンプルコード解説】
この記事では、JDBCプログラムを使用してCLOBデータ型の値をデータベースのテーブルに挿入する方法を、具体的なサンプルコードとともに解説します。前提条件:サンプル用テーブルの準備まず、データベースに以下の構造を持つ「MyData」というテーブルが既に存在しているものと仮定します。+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+----
-
C言語で二項係数テーブルを出力するプログラムの作成方法
正の整数値(ここでは「val」とします)が与えられたとき、0からvalまでの範囲にある任意のnとkに対する二項係数B(n, k)の値を計算し、テーブル形式で出力するのが本記事の目的です。 二項係数とは 二項係数(n, k)とは、「n個の選択肢の中からk個を選ぶ組み合わせ」の総数を表す値です。正の整数nおよびkに対する二項係数は、次の式で定義されます。 $$C_k^n=\frac{n!}{(n-k)!k!}$$ ただし、条件として n >= k が満たされている必要があります。 計算例 入力: B(9,2) 出力: $$B_2^9=\frac{9!}{(9-2)!2!}$$