LoginSignup
2
2

More than 1 year has passed since last update.

【実践‼】SQLステートメントの実行

Last updated at Posted at 2020-05-08

1.事前知識

事前知識として、上記リンクの内容が必要です。

2.基本的な書き方

更新系SQL
public class クラス名 {
	public static void main(String[] args) {
		try {
			/* コネクション */
			Connection con = DriverManager.getConnection(データベースのURL, データベースのユーザ名, データベースのパスワード);
			/* ステートメント */
			PreparedStatement pstmt = con.prepareStatement(SQL文);

			// SQL文に値の代入
			pstmt.setString(何番目の?, );

			/* SQL文の実行 */
			pstmt.executeUpdate(); 

		} catch (SQLException e) {
			// SQLのエラー発生時の処理
		}
	}
}
参照系SQL
public class クラス名 {
	public static void main(String[] args) {
		try {
			/* コネクション */
			Connection con = DriverManager.getConnection(データベースのURL, データベースのユーザ名, データベースのパスワード);
			/* ステートメント */
			PreparedStatement pstmt = con.prepareStatement(SQL文);

			// SQL文に値の代入
			pstmt.setString(何番目の?, );

			// SQL文の実行
			ResultSet res = pstmt.executeQuery();

			// ResultSetの操作
			while (res.next()) {
				// 実行結果の表示
			}

		} catch (SQLException e) {
			// SQLのエラー発生時の処理
		}
	}
}
  • 基本的なSQLステートメントの実行は上記のように記述する。

3.事前準備

【実践‼】Javaデータベース連携(Connector/J 8.0.20)データベースの設定 を行っていることを前提にしています。

01.png

  1. Eclipseを起動後、 [新規(N)]→[Javaプロジェクト] を選択する。
    02.png
  2. プロジェクト名に TestDB と入力し、実行環境JREの使用を JavaSE-1.8 を選択して、 完了 ボタンをクリックする。
    03.png
  3. [新規(N)]→[クラス] を選択する。   
    04.png
  4. パッケージに db, 名前に Test1 と入力し、 public static void main(String[] args) にチェックを付け、 完了 ボタンをクリックする。
    05.png
  5. プロジェクトを 右クリック して [ビルド・パス(B)]→[外部アーカイブの追加(V)] を選択する。
    06.png
  6. C:\Program Files\MySQL\mysql-connector-java-8.0.20mysql-connector-java-8.0.20.jar を選択する。

4.記述例

  • 参照(SELECT文)
Test1.java
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test1 {
	public static void main(String[] args) {
		/* データベースURL */
		String url = "jdbc:mysql://localhost/test?characterEncoding=UTF-8&useSSL=false";

		/* データベースのユーザとパスワード */
		String user = "test";
		String password = "test";

		/* SQL文 */
		String sql = "SELECT * FROM test1";

		try {
			/* コネクション */
			Connection con = DriverManager.getConnection(url, user, password);
			/* ステートメント */
			PreparedStatement pstmt = con.prepareStatement(sql);

			// SQL文の実行
			ResultSet res = pstmt.executeQuery();

			// ResultSetの操作
			while (res.next()) {
				// 実行結果の表示
				System.out.print("ID:" + res.getInt("id") + " ");
				System.out.print("名前:" + res.getString("name") + "\n");
			}
		} catch (SQLException e) {
			// SQLのエラー発生時の処理
			e.printStackTrace();
		}
	}
}
  • 登録(INSERT文)
Test1.java
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test1 {
	public static void main(String[] args) {
		/* データベースURL */
		String url = "jdbc:mysql://localhost/test?characterEncoding=UTF-8&useSSL=false";

		/* データベースのユーザとパスワード */
		String user = "test";
		String password = "test";

		/* SQL文 */
		String sql = "INSERT INTO test1 (name) VALUE (?)";

		try {
			/* コネクション */
			Connection con = DriverManager.getConnection(url, user, password);
			/* ステートメント */
			PreparedStatement pstmt = con.prepareStatement(sql);

			// プレースホルダに値の設定
			pstmt.setString(1,"test5");

			// SQL文の実行(更新)
			pstmt.executeUpdate();

			// SQL文の更新
			sql = "SELECT * FROM test1";

			/* ステートメント */
			pstmt = con.prepareStatement(sql);

			// SQL文の実行(参照)
			ResultSet res = pstmt.executeQuery();

			// ResultSetの操作
			while (res.next()) {
				// 実行結果の表示
				System.out.print("ID:" + res.getInt("id") + " ");
				System.out.print("名前:" + res.getString("name") + "\n");
			}
		} catch (SQLException e) {
			// SQLのエラー発生時の処理
			e.printStackTrace();
		}
	}
}
  • 変更(UPDATE文)
Test1.java
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test1 {
	public static void main(String[] args) {
		/* データベースURL */
		String url = "jdbc:mysql://localhost/test?characterEncoding=UTF-8&useSSL=false";

		/* データベースのユーザとパスワード */
		String user = "test";
		String password = "test";

		/* SQL文 */
		String sql = "UPDATE test1 SET name = ? WHERE id = ?";

		try {
			/* コネクション */
			Connection con = DriverManager.getConnection(url, user, password);
			/* ステートメント */
			PreparedStatement pstmt = con.prepareStatement(sql);

			// プレースホルダに値の設定
			pstmt.setString(1,"testX");
			pstmt.setInt(2,2);

			// SQL文の実行(更新)
			pstmt.executeUpdate();

			// SQL文の更新
			sql = "SELECT * FROM test1";

			/* ステートメント */
			pstmt = con.prepareStatement(sql);

			// SQL文の実行(参照)
			ResultSet res = pstmt.executeQuery();

			// ResultSetの操作
			while (res.next()) {
				// 実行結果の表示
				System.out.print("ID:" + res.getInt("id") + " ");
				System.out.print("名前:" + res.getString("name") + "\n");
			}
		} catch (SQLException e) {
			// SQLのエラー発生時の処理
			e.printStackTrace();
		}
	}
}
  • 削除(DELETE文)
Test1.java
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test1 {
	public static void main(String[] args) {
		/* データベースURL */
		String url = "jdbc:mysql://localhost/test?characterEncoding=UTF-8&useSSL=false";

		/* データベースのユーザとパスワード */
		String user = "test";
		String password = "test";

		/* SQL文 */
		String sql = "DELETE FROM test1 WHERE id = ?";

		try {
			/* コネクション */
			Connection con = DriverManager.getConnection(url, user, password);
			/* ステートメント */
			PreparedStatement pstmt = con.prepareStatement(sql);

			// プレースホルダに値の設定
			pstmt.setInt(1,3);

			// SQL文の実行(削除)
			pstmt.executeUpdate();

			// SQL文の更新
			sql = "SELECT * FROM test1";

			/* ステートメント */
			pstmt = con.prepareStatement(sql);

			// SQL文の実行(参照)
			ResultSet res = pstmt.executeQuery();

			// ResultSetの操作
			while (res.next()) {
				// 実行結果の表示
				System.out.print("ID:" + res.getInt("id") + " ");
				System.out.print("名前:" + res.getString("name") + "\n");
			}
		} catch (SQLException e) {
			// SQLのエラー発生時の処理
			e.printStackTrace();
		}
	}
}

上記の文をコピーして、文字コードは S-JIS を指定し、ファイル名を Test1.java で保存し、実行するとこうなります。↓↓  

  • 参照(SELECT文)
    01.png

  • 登録(INSERT文)
    02.png

  • 変更(UPDATE文)
    03.png

  • 削除(DELETE文)
    04.png

5.GitHub

GitHubにソースコードを公開しています。

6.関連

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2