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

JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説


JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。

INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N);

ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。

ステップ1:MySQLでテーブルを作成する

まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。

mysql> create table InsertDemo
    -> (
    -> Id int,
    -> Name varchar(200),
    -> Age int
    -> );
Query OK, 0 rows affected (0.97 sec)

これで、「Id」「Name」「Age」の3つのカラムを持つテーブル「InsertDemo」が作成されました。

ステップ2:JDBCでMySQLに接続し、レコードを挿入する

次に、テーブル「InsertDemo」にレコードを挿入するためのJavaコードを紹介します。データ挿入の前に、JDBC(Java Database Connectivity)を使ってMySQLデータベースへの接続を確立する必要があります。

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
public class JavaInsertDemo {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (Exception e) {
                System.out.println(e);
            }
        conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/business", "Manish", "123456");
        System.out.println("Connection is created successfully:");
        stmt = (Statement) conn.createStatement();
        String query1 = "INSERT INTO InsertDemo " + "VALUES (1, 'John', 34)";
        stmt.executeUpdate(query1);
        query1 = "INSERT INTO InsertDemo " + "VALUES (2, 'Carol', 42)";
        stmt.executeUpdate(query1);
        System.out.println("Record is inserted in the table successfully..................");
        } catch (SQLException excep) {
            excep.printStackTrace();
        } catch (Exception excep) {
            excep.printStackTrace();
        } finally {
            try {
                if (stmt != null)
                    conn.close();
            } catch (SQLException se) {}
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            } 
        }
        System.out.println("Please check it in the MySQL Table......... ………..");
    }
}

コードのポイント

  • Class.forName():JDBCドライバをロードし、MySQLとの通信を可能にします。
  • DriverManager.getConnection():URL・ユーザー名・パスワードを指定してデータベース接続を取得します。
  • createStatement():SQL文を実行するためのStatementオブジェクトを生成します。
  • executeUpdate():INSERT文を実行し、テーブルにレコードを追加します。
  • finallyブロック:例外の発生有無にかかわらず、接続やリソースを確実にクローズします。

なお、本サンプルでは旧式のドライバクラス「com.mysql.jdbc.Driver」を使用していますが、MySQL Connector/J 8.0以降では「com.mysql.cj.jdbc.Driver」に変更されているため、環境に合わせて使い分けてください。

実行結果

プログラムを実行すると、コンソールには以下のような出力が表示されます。

JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説

ステップ3:SELECT文で挿入結果を確認する

データが正しくテーブルに挿入されたかどうかを確認するには、SELECT文を使用します。

mysql> select * from InsertDemo;

実行結果は以下の通りです。

+------+-------+------+
| Id   | Name  | Age  |
+------+-------+------+
|    1 | John  |   34 |
|    2 | Carol |   42 |
+------+-------+------+
2 rows in set (0.00 sec)

上記の出力から、2件のレコード(JohnさんとCarolさんの情報)が正常にMySQLデータベースへ挿入されたことが確認できました。

補足:PreparedStatementの活用をおすすめ

固定値を挿入する場合はStatementで十分ですが、ユーザー入力などを扱う場合はPreparedStatementを使用することで、SQLインジェクション攻撃を防ぎ、パフォーマンスも向上させることができます。実務開発では、プレースホルダー(?)を使ったPreparedStatementの利用が推奨されています。


  1. JavaでMySQLテーブルに1つのカラムのみを挿入する方法

    JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m

  2. JavaでMySQLデータベースにNULL値を挿入する方法

    JavaからデータベースにNULL値を挿入したいケースはよくあります。その場合、PreparedStatementのsetNull()メソッドを使用します。基本的な構文は以下の通りです。ps.setNull(インデックス番号, Types.NULL);この記事では、実際にサンプルを通してNULL値の挿入手順を解説します。1. テーブルの作成まず、MySQLでテスト用のテーブルを作成します。mysql> create table DemoTable1893 ( FirstName varchar(20) ); Query OK, 0 rows affected (0