MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBCでCLOBデータ型の値をテーブルに挿入する方法【サンプルコード解説】

この記事では、JDBCプログラムを使用してCLOBデータ型の値をデータベースのテーブルに挿入する方法を、具体的なサンプルコードとともに解説します。

前提条件:サンプル用テーブルの準備

まず、データベースに以下の構造を持つ「MyData」というテーブルが既に存在しているものと仮定します。

+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| Name    | varchar(255) | YES  |     | NULL    |       |
| Article | longtext     | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

「Article」カラムはlongtext型(MySQLにおけるCLOB相当)として定義されており、大きなテキストデータを格納できます。

CLOB型への値挿入に使えるJDBCのメソッド

JDBCプログラムでCLOBデータ型に値を挿入するには、ファイルの内容を読み込んでデータベースの行に設定できるメソッドを使用する必要があります。これらのメソッドはPreparedStatementインターフェースによって提供されています。

1. setCharacterStream() メソッド

void setCharacterStream(int parameterIndex, Reader reader) メソッドは、Readerオブジェクトの内容を、指定されたインデックスのパラメータ値として設定します。このメソッドには以下のバリエーションもあります。

  • void setCharacterStream(int parameterIndex, Reader reader, int length)
  • void setCharacterStream(int parameterIndex, Reader reader, long length)

2. setClob() メソッド

void setClob(int parameterIndex, Clob x) メソッドは、指定されたjava.sql.Clobオブジェクトを、指定されたインデックスのパラメータ値として設定します。こちらにも以下のバリエーションがあります。

  • void setClob(int parameterIndex, Reader reader)
  • void setClob(int parameterIndex, Reader reader, long length)

CLOBデータ型への値設定は、これらのいずれかのメソッドを使って行うことができます。

実装例:setClob()メソッドを使った挿入処理

以下の例では、setClob()メソッドを使用してCLOBデータ型に値を設定しています。テキストファイルの内容をそのままデータベースへ登録する典型的なパターンです。

import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertingValueInClob {
    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 MyData(Name, Article ) VALUES (?, ?)";
        PreparedStatement pstmt = con.prepareStatement(query);
        pstmt.setString(1, "JavaFX");
        FileReader reader = new FileReader("E:\\images\\javafx.txt");
        pstmt.setClob(2, reader);
        pstmt.execute();
        System.out.println("Data inserted");
    }
}

実行結果

Connection established......
Table Created......
Contents of the table are:
JavaFX
E:\images\MyData_clob_output1.txt

挿入結果の確認方法

MySQL Workbenchなどでレコード内のCLOB値を確認すると、テキストファイルから読み込まれたデータが正しく挿入されていることがわかります。大量のテキストデータでも、この方法ならメモリ上に全容を展開することなくストリーム経由で効率的に登録できるのがポイントです。

  1. JDBCでBLOBデータ型の値をテーブルに挿入する方法|サンプルコード付き

    BLOBデータ型とはBLOB(Binary Large Object)は、画像・音声・動画などのバイナリデータをデータベースに格納するためのデータ型です。MySQLでは、BLOB型のカラムに画像ファイルなどを直接保存することができます。本記事では、JDBCを使ってBLOB型カラムに画像データを挿入する具体的な手順を解説します。前提条件:テーブル構造データベースには、以下のような構造を持つ「MyTable」というテーブルがすでに存在しているものとします。+-------+--------------+------+-----+---------+-------+ | Field | Type

  2. JDBCのgetCharacterStream()メソッドでテーブルからClob値を取得する方法【サンプルコード解説】

    JDBCのResultSetインターフェースには、データベースのテーブルからCLOB型(長文テキスト)のデータを取得するためのメソッドとして、getClob()とgetCharacterStream()の2つが用意されています。 どちらのメソッドも、引数に列のインデックスを表す整数(または列名を表す文字列)を指定でき、該当する列の値を取得します。両者の違いは戻り値の型です。getClob()メソッドがjava.sql.Clobオブジェクトを返すのに対し、getCharacterStream()メソッドは文字ストリームを扱うjava.io.Readerクラスのオブジェクトを直接返します。そのため