
こんにちは、大学時代にプログラミングを始め、現在はエンジニアをしているuhablog(ウハブログ)です。
今回の記事ではJavaでMySQLに接続してinsert文によってデータを追加する方法を解説していきます。
前提としてMySQL側でデータベースとテーブルが準備されていることとします。使うデータベース名やテーブル名は以下の通りです。
- データベース名:testdb
- テーブル名:test_table
- user: root
- password: rootpass
なおtest_tableはintのidとvarcharのnameをカラムとして持つテーブルになります。
挫折せずにプログラミングを学ぶために必要なこと
僕はプログラミングで挫折した経験があります。
それは周りに聞ける人がいなく、一人でエラーと戦っていたからです。
Freeksは月額10,780円という破格の値段で、現役エンジニアに質問する環境を手に入れることができるプログラミングスクールです。
次のような悩みを少しでも抱えていたら、まずは無料カウンセリングを受けてみてください。
申込みは1分でできます。学習する環境にお金を使うというのは良い自己投資になります。
>>Freeksの無料カウンセリングはこちら
MySQLにinsertするサンプルコード
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class Insert {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
String password = "rootpass";
try (Connection con = DriverManager.getConnection(url, user, password);
PreparedStatement preStatement = con.prepareStatement("insert into test_table values(?, ?);")) {
Scanner sc = new Scanner(System.in);
System.out.print("idを入力してください");
int id = Integer.parseInt(sc.nextLine());
System.out.print("名前を入力してください");
String name = sc.nextLine();
preStatement.setInt(1, id);
preStatement.setString(2, name);
int count = preStatement.executeUpdate();
}catch (SQLException e) {
e.printStackTrace();
}finally {
System.out.println("人間を追加しました。");
}
}
}
以下細かく解説していきます。
データベースと接続
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
tring password = "rootpass";
try (Connection con = DriverManager.getConnection(url, user, password);
まずはデータベースと接続するための準備が記述してあります。
urlやuser、passwordといった変数を準備してそれをDribeManagerのgetConnectionメソッドに引数として渡します。
これによってconnectionオブジェクトを利用することができるようになります。
実行したいinsert文を準備
PreparedStatement preStatement = con.prepareStatement("insert into test_table values(?, ?);")) {
次に先ほど取得したConnectionオブジェクトのprepareStatementメソッドの引数に実行したいSQL文を渡します。
この時状況に応じて変更したい部分を?と記述しておきます。
PreparedStatementメソッドが返ってくるのでそれを変数に格納しておきます。
insert文の実行
Scanner sc = new Scanner(System.in);
System.out.print("idを入力してください");
int id = Integer.parseInt(sc.nextLine());
System.out.print("名前を入力してください");
String name = sc.nextLine();
preStatement.setInt(1, id);
preStatement.setString(2, name);
int count = preStatement.executeUpdate();
今回はユーザから追加したい人物のidとnameを入力してもらってその値に応じたデータをテーブルに追加していく仕様にしました。
そのためScannerクラスを使っています。int型のidとString型のnameにそれぞれユーザからの入力を格納します。
ここからが本題になりますが、preparedStatementオブジェクトのsetIntやsetStringを使うことで最初に準備したSQL文の?部分に値を入れることができます。
今回は1番目の?にidを入れたいので、setIntの第一引数に1を渡し、第二引数に実際にデータとして入れたいidを渡します。setStringも同じ要領でユーザから受け取ったnameを入れます。
これをすることで
insert into test_table values(?, ?);
だったSQL文が
insert into test_table values(id, name);
こうなります。
動作確認
上記プログラムを実行してみます。
idを入力してください5
名前を入力してください石原太郎
人間を追加しました。
実行した後、MySQL、もしくはJavaプログラムでselect文を実行すると先ほど追加したレコードが存在するはずです。
挫折せずにプログラミングを学ぶためには?
僕はプログラミングで挫折した経験があります。
エラーの連続やエラーが解消しても思った通りに動かないといったことが原因で、プログラミングが嫌いでした。
「プログラミングって全然意味わからないし、全然楽しくない」そう思っていました。
原因は当時周りに聞ける人が誰もいなかったからです。
プログラミング学習をしていく上で周りに聞ける環境というのはとても大切です。

周りに聞ける人なんていない
そんな人におすすめなのが月額10,780円で現役エンジニアに質問できる、プログラミングスクールのFreeksです。
多くのプログラミングスクールが数十万円払って通うところを月額10,780円から通うことができるのはコスパが良いです。
しかもサブスク制で、自分のペースで学ぶことができ嫌になったらすぐにやめることができます。
「周りに誰も聞ける人がいなくて、エラーが解決できない」「プログラミング全然楽しくない」という方は、無料カウンセリングを受けてみて下さい。
【関連記事】Freeks評判、口コミ