JavaからMySQLに接続して登録する
はじめに
データベースは作成されているものとし、データベース名・テーブル名は下記とします。
データベース名:「cm」 テーブル名: 「music」
ドライバの設定
今回はMySQLを使用するので、接続するために「JDBCドライバ」をダウンロードしてプロジェクトに結びつけます。 MySQL::Download Connector/J
Eclipseの場合、プロジェクトフォルダを選択して右クリックから、 「Properties」 > 「Java Build Path」 > 「Libraries」タブ > 「Add External JARs...」 からダウンロードした ”mysql-connector-java-x.x.xx-bin.jar” を選択。 最後に「OK」か「Apply」を押して決定。
「Referenced Libraries」が生成されてドライバが登録されていると思います。
テーブル作成
下記のSQL文を実行すると...
CREATE TABLE music( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, title VARCHAR(50) NOT NULL, year INTEGER(4) NOT NULL, PRIMARY KEY(id) );
こんなテーブルが出来上がりました。
ここに登録して行きます。
コード
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class ConnectionClass { static final String URL = "jdbc:mysql://localhost/cm"; static final String USERNAME = "user"; static final String PASSWORD = "pass"; public static void main(String[] args) { try ( Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); Statement statement = connection.createStatement(); ) { String sql = "INSERT INTO music VALUES (1, 'Michael Jackson', 'Butterflies', 2001);"; int result = statement.executeUpdate(sql); System.out.println("結果1:" + result); sql = "INSERT INTO music (name, title, year) VALUES ('Aril Brikha', 'Groove La Chord', 1998);"; result = statement.executeUpdate(sql); System.out.println("結果2:" + result); } catch (SQLException e) { e.printStackTrace(); } } }
解説
ConnectionでMySQLのデータベースに接続をするためにデータベースURL、ユーザ名、パスワードを設定。 データベースURLはこんな感じで。
jdbc:mysql:// ホスト名 / データベース名
Statement でSQL文をデータベースに送るオブジェクトを生成。 Connection と Statement は AutoCloseable が設定されていて try-catch-resources で記述しているので、 close() (リソース解放処理)が自動的に実行されます。
try ( Connection connection = DriverManager.getConnection("データベースURL", "ユーザ名", "パスワード"); Statement statement = connection.createStatement(); ) }
SQL文で全カラムに値を設定しているので、カラム名の指定をせずに statement.execute(sql) で実行。 その返り値を出力します。
String sql = "INSERT INTO music VALUES (1, 'Michael Jackson', 'Butterflies', 2001);"; int result = statement.executeUpdate(sql); System.out.println("結果1:" + result);
"id"を指定せずにオートインクリメントを利用するSQL文を実行。 その返り値を出力します。
sql = "INSERT INTO music (name, title, year) VALUES ('Aril Brikha', 'Groove La Chord', 1998);"; result = statement.executeUpdate(sql); System.out.println("結果2:" + result);
出力結果
登録に成功するとINSERT文それぞれで更新した行数が返ります。
結果1:1 結果2:1
テーブル確認
以上になります。
まとめ
前回の「CSVファイルをJavaで読み込んで文字コードを変換」と同様、当時に自分が欲しかった内容を記事にしました。
今回はSQL文の実行に Statement を使用して一つずつの結果を見て行きましたが、複数のSQL文をまとめて処理できる PreparedStatement も有るので別の機会に紹介しようと思います。