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

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を使ってMySQLデータベースにファイルを保存・挿入する方法

  1. JDBCでデータベースからファイル(CLOB)を取得する方法

    JDBCでデータベースからファイルを取得するには?データベースには、ファイルの内容をCLOB型として格納することが一般的です。ResultSetインターフェースには、このCLOB型のデータを取得するためのgetClob()メソッドとgetCharacterStream()メソッドが用意されています。どちらのメソッドも、引数として列のインデックスを表す整数、または列名を表す文字列を受け取り、指定された列の値を取得します。両者の違いは、getClob()メソッドがClobオブジェクトを返すのに対し、getCharacterStream()メソッドはCLOB型の内容を保持するReaderオブジェクト

  2. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId