JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法
一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。
JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。
PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。
このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイル)の内容が値として設定されます。
非常に大きなテキスト値をデータベースに送信したい場合に、このメソッドが役立ちます。
JDBCでテキストファイルを保存する手順
JDBCプログラムを使ってデータベースにファイルを保存したい場合は、まずClob型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムを持つテーブルを作成します。以下はその例です。
CREATE TABLE Articles(Name VARCHAR(255), Article LONGTEXT);
次に、JDBCでデータベースに接続し、作成したテーブルへ値を挿入するための PreparedStatement を準備します。
String query = "INSERT INTO Articles(Name, Article) VALUES (?,?)"; PreparedStatement pstmt = con.prepareStatement(query);
プレースホルダへの値の設定には、PreparedStatementインターフェースのセッターメソッドを使用します。通常の文字列には setString() を使い、Clob型のカラムには setCharacterStream() メソッドでファイルの内容を設定します。
サンプルコード
以下は、JDBCプログラムを使用してファイルをMySQLデータベースに挿入する方法を示すサンプルです。ここではClob型のカラムを持つテーブルを作成し、そこに値を挿入しています。
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertingFileToDatabase {
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 Articles(Name, Article) VALUES (?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setString(1, "article1");
FileReader reader = new FileReader("E:\\data\\article1.txt");
pstmt.setCharacterStream(2, reader);
pstmt.execute();
pstmt.setString(1, "article2");
reader = new FileReader("E:\\data\\article2.txt");
pstmt.setCharacterStream(2, reader);
pstmt.execute();
pstmt.setString(1, "article3");
reader = new FileReader("E:\\data\\article3.txt");
pstmt.setCharacterStream(2, reader);
pstmt.execute();
System.out.println("Data inserted......");
}
}
実行結果
Connection established...... Data inserted......
MySQL Workbenchを使用すると、テーブルの内容をHTMLファイル、CSVファイル、テキストファイルなど、さまざまな形式のファイルにエクスポートできます。データ挿入後にテーブルの内容をHTMLファイルへエクスポートすると、出力は次のようになります。

-
JDBCでデータベースからファイル(CLOB)を取得する方法
JDBCでデータベースからファイルを取得するには?データベースには、ファイルの内容をCLOB型として格納することが一般的です。ResultSetインターフェースには、このCLOB型のデータを取得するためのgetClob()メソッドとgetCharacterStream()メソッドが用意されています。どちらのメソッドも、引数として列のインデックスを表す整数、または列名を表す文字列を受け取り、指定された列の値を取得します。両者の違いは、getClob()メソッドがClobオブジェクトを返すのに対し、getCharacterStream()メソッドはCLOB型の内容を保持するReaderオブジェクト
-
Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】
はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId