個別指導 Javaプログラミングスクール 武蔵浦和(中浦和)

現役SE(システムエンジニア)が埼京線の武蔵浦和(中浦和)周辺でJavaプログラミング学習の個別指導を行っています。

データベース接続6

[Webアプリケーション] データベース接続6

SQL データベース操作の学習でトランザクションを勉強しましたが、 今までのプログラムではデータ登録の際にコミットしていないのに、自動で登録されていたのに疑問を感じていたかもしれません。

Javaでも勿論トランザクションを利用できます。トランザクションはConnectionクラスのsetAutoCommitメソッドで実装できます。 自動コミットを無効化するfalseを引数に設定することで、一連のデータベースの更新処理をトランザクションで管理できます。 トランザクションを利用する場合は、明示的にcommitメソッドを記述してデータベースに変更を反映させる必要があります。 また、データベースの変更をキャンセルする場合はrollbackメソッドを記述します。

// トランザクション
setAutoCommit(false);

// コミット
commit();

// ロールバック
rollback();


最後に下記のトランザクションを利用したサンプルを参考に、ユーザー情報の更新・退会ができるマイページをイメージしたプログラムを作成してください。
どのようなプログラムにするかは完全に自由です。イメージした機能をプログラミングで実装する練習をしましょう。

サンプルプログラム

public static void main(String[] args) throws SQLException {
    try {
        // JDBCドライバーのロード
        Class.forName("com.mysql.cj.jdbc.Driver");
    }catch(ClassNotFoundException e) {
        e.printStackTrace();
    }

    // URL、ユーザー名、パスワードに値を設定
    String url   = "jdbc:mysql://localhost/データベース名"
                     + "?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
    String user = "ユーザー名";
    String pw   = "パスワード";

    // コネクション
    Connection con = null;
    // プリペアードステートメント
    PreparedStatement st = null;

    try {
        // データベースへの接続
        con = DriverManager.getConnection(url, user, pw);

        // トランザクションの開始
        con.setAutoCommit(false);
        System.out.println("トランザクションの開始");

        //-------------------------------------------------
        // ➀スケジュールテーブルの削除処理
        //-------------------------------------------------
        String sql = "DELETE FROM sample1 WHERE user_id = ?";
        st = con.prepareStatement(sql);
        // ユーザーIDを設定
        st.setString(1, "xxxx");
        // SQLを実行
        int cnt = st.executeUpdate();
        System.out.println("スケジュール:" + cnt + "件 削除");
        // クローズ
        st.close();

        //-------------------------------------------------
        // ➁ユーザーテーブルの削除処理
        //-------------------------------------------------
        sql = "DELETE FROM sample2 WHERE user_id = ?";
        st = con.prepareStatement(sql);
        // ユーザーIDを設定
        st.setString(1, "xxxx");
        // SQLの実行
        cnt = st.executeUpdate();
        System.out.println("ユーザー:" +cnt + "件 削除");
        // クローズ
        st.close();

        // コミット
        con.commit();
        System.out.println("コミット");

    }catch(SQLException e) {
        // ロールバック
        con.rollback();
        System.out.println("ロールバック");

        e.printStackTrace();
    }finally{
        // リソースの開放
        if(con != null) {
            try {
                con.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        if(st != null) {
            try {
                st.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com