3日坊主アプリ開発 209日目


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • 本日の作業

DB接続管理クラスの作成

 

sql投げるだけで実行してくれるメソッドを持つクラスを作成しました。
コネクションを意識せずに使えるタイプと、自分でコネクションを渡せる2タイプを用意しました。

例外発生時のロギングには、昨日作成した自作クラスを使っています。

使うとき意味なくインスタンス化する必要あるし、ResultSet呼び出し元でcloseしなきゃいけないし、いまいちなので、もうちょっと改造します。

package servlet;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
import servlet.Logging;

public class DBManager {

        Connection getConn() {
                Connection conn = null;
                try {
                    Class.forName(“com.mysql.jdbc.Driver”);
                    // MySQLに接続
                    conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/catama”, “user”, “password”);
                } catch (ClassNotFoundException | SQLException e) {
                    Logging.out(e);
                }
                return conn;
        }

        void releaseConn(Connection conn) {
                if (null == conn) {
                        Logging.out(“connection is null.”);
                        return;
                }
                try {
                        conn.close();
                } catch (SQLException e) {
                        Logging.out(e);
                }
        }

        ResultSet query(String sql) {
                Connection conn = null;
                ResultSet rs = null;
                try {
                        conn = this.getConn();
                        rs = this.query(sql, conn);
                } finally {
                        releaseConn(conn);
                }
                return rs;
        }

        ResultSet query(String sql, Connection conn) {
                if (null == conn) {
                        Logging.out(“connection is null.”);
                        return null;
                }
                ResultSet rs = null;
                Statement st = null;

                try {
                        st = conn.createStatement();
                        rs = st.executeQuery(sql);
                } catch(SQLException e) {
                        Logging.out(e);
                } finally {
                        if (null != st) {
                                try {
                                        st.close();
                                } catch (SQLException e) {
                                        Logging.out(e);
                                }
                        }
                }
                return rs;
        }

        int queryExec(String sql) {
                int result = -1;
                Connection conn = null;
                try {
                        conn = this.getConn();
                        result = this.queryExec(sql, conn);
                } finally {
                        releaseConn(conn);
                }
                return result;
        }

        int queryExec(String sql, Connection conn) {
                int result = -1;
                if (null == conn) {
                        Logging.out(“connection is null.”);
                        return result;
                }
                Statement st = null;

                try {
                        st = conn.createStatement();
                        result = st.executeUpdate(sql);
                } catch (SQLException e) {
                        Logging.out(e);
                } finally {
                        if (null != st) {
                                try {
                                        st.close();
                                } catch (SQLException e) {
                                        Logging.out(e);
                                }
                        }
                }
                return result;
        }
}

  • 明日の予定

サーバにログインする処理を実装する。サーバに各ユーザの識別ID※とユーザ名を格納する。

※appleの推奨するidentifierForVendor(IDFV)を識別IDとして使います。

コメントを残す

メールアドレスが公開されることはありません。