DataBaseに接続 (JDBC & JavaBeans)

database class (DataBaseBean.java)


  1. データベースにアクセスするロジックは1つのクラスとしてまとめる。
    いろいろなJSP,Servletでデータベース名やユーザー名など同じようなパラメータを使用している。データベースへのアクセス方法やSQLの実行なども似たようなものであった。これらを1つにまとめることで、処理の管理がわかりやすくなる。
    ファイル名 機能
    DataBaseBean.java データベースへアクセスするメソッドを含むJavaBean
    JSP,Servletのほかアプリケーションから呼び出すこともできる。

  2. 作成するデータベース&テーブル
    データベース名はj00300_03とする。
    テーブルはsample03a,sample03bとする。テーブルの構造はどちらも同じ。
    テーブルの構造
    フィールド名 用途
    id int 出席番号
    name text 氏名

  3. サンプルで使用するデータベース
    任意の名前を付けてよいが、可読性を考慮し、フィールド名と変数名は同じにする。
    内容 データベース Bean
    フィールド名 変数名
    出席番号 id int id int
    氏名 name text name String

  4. DataBaseBean中で使用する変数
    変数 用途 default value
    String database_name データベース名 "j00300_03"
    String table_name テーブル名 "sample03"
    int id 出席番号 なし
    String name 氏名 なし
    String driver PostgreSQL JDBCドライバ名 "org.postgresql.Driver"
    String jdbc jdbc:postgres://(サーバ名):(ポート番号)/ "jdbc:postgresql://10.30.2.29:5432/"
    String user ユーザー名 "j00300"
    String pass ユーザーのパスワード "xxxxxx"
    String url データベースのURL jdbc:postgres://(サーバ名):(ポート番号)/(データベース名) "jdbc:postgresql://10.30.2.29:5432/j00300_03"
    String msg Beanからメッセージ データベースで処理をした結果等 ""
    String sql データベースへ渡すSQL文 ""
    ResultSet rs SQLに対するデータベースから応答 なし
    e try節で発生した例外を記憶 なし

  5. メソッド
    用意するメソッドはつぎのとおり
    メソッドを用意したがサンプルで使わないものもある。
    メソッド 機能
    void crease_database() database_nameで指定されたデータベースを作る
    void create_table() table_nameで指定されたテーブルを作る
    void insert() table_nameで指定されたテーブルにid,nameを登録する
    void select() table_nameで指定されたテーブルからidが一致するデータを取り出す。
    void any_sql() sqlに格納されたSQL文を実行する。
    void set_Database_name(String) データベース名をセット
    void set_Table_name(String) テーブル名をセット
    void set_Id(int) 出席番号をセット
    void set_Name(String) 氏名をセット
    void set_Pass(String) データベースUserに対応するパスワードをセット
    void set_Sql(String) SQL文をセット
    void set_User(String) データベースUserをセット
    String get_Database_name() 現在セットされているdatabase_nameを得る
    String get_Table_name() 現在セットされているtable_nameを得る
    String get_Select() selectを実行した結果を表形式で得る
    int getId() 検索で使用したidを取得
    String getName() 検索で使用したnameを取得
    String getMsg() SQL実行結果等を取得
    String getSql() 実行したSQLを取得
    String getUrl() データベースサーバのURLを取得
    jdbc:postgresql://(データベースサーバ名):(ポート番号)/(データベース名)
    String getJdbc() データベースサーバ名とポート番号
    jdbc:postgresql://(データベースサーバ名):(ポート番号)/
    String getUser() データベースユーザ名

  6. DataBaseBean.java
    /*
     * 作成日: 2004/07/01
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    package j00300_03;
    import java.sql.*;
    
    /**
     * @author j00300
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    public class DataBaseBean {
            String driver="org.postgresql.Driver";
            String jdbc ="jdbc:postgresql://10.30.2.29:5432/";//database ipaddress & jdbc
            String user="j00300";//database username
            String pass="xxxxxxxx";//database password
            
            String database_name ="j00300_03";//    データベース名
            String table_name="sample03";// テーブル名
            int id;//               出席番号
            String name ;// 氏名
            
            String url = jdbc + database_name ;
            String msg ="";
            String sql ="";
            ResultSet rs;
            Exception e;
            /**
             * 
             */
            public DataBaseBean() {
                    //super();
                    // TODO 自動生成されたコンストラクター・スタブ
            }
    
    
            /**
             * @return
             */
            public String getDatabase_name() {
                    return database_name;
            }
    
            /**
             * @return
             */
            public int getId() {
                    return id;
            }
    
            /**
             * @return
             */
            public String getMsg() {
                    return msg;
            }
    
            /**
             * @return
             */
            public String getName() {
                    return name;
            }
    
            /**
             * @return
             */
            public String getPass() {
                    return pass;
            }
            
            /**
             * @return
             */
            public String getSql() {
                    return sql;
            }
    
            /**
             * @return
             */
            public String getTable_name() {
                    return table_name;
            }
    
            /**
             * @return
             */
            public String geturl() {
                    return url;
            }
    
            /**
             * @return
             */
            public String getjdbc() {
                    return jdbc;
            }
    
            /**
             * @return
             */
            public String getUser() {
                    return user;
            }
    
            /**
             * @param string
             */
            public void setDatabase_name(String string) {
                    database_name = string;
                    url = jdbc + database_name;             
            }
    
            /**
             * @param i
             */
            public void setId(int i) {
                    id = i;
            }
    
            /**
             * @param string
             */
            public void setName(String string) {
                    try{
                            name = new String(string.getBytes("8859_1"),"UTF-8");   //日本語の処理
                    } 
                    catch(Exception ex) {
                            name = string ;
                            msg = "日本語の処理に問題が発生" ;
                    }
            }
    
            /**
             * @param string
             */
            public void setPass(String string) {
                    pass = string;
            }
    
            /**
             * @param string
             */
            public void setSql(String string) {
                    sql = string;
            }
    
            /**
             * @param string
             */
            public void setTable_name(String string) {
                    table_name = string;
            }
    
            /**
             * @param string
             */
            public void setUser(String string) {
                    user = string;
            }
            
            /**
             * @return
             */
    
    
            /*************************************************************/  
            public void create_database() {
                    //DataBaseに接続 (JDBC,JavaBean & JSP)データベースをつくる
                    try {
                      Class.forName(driver);
                      Connection con = DriverManager.getConnection( jdbc+"test",user,pass) ;
                      Statement st = con.createStatement() ;
                      sql="create database " + database_name + " ;" ;
                      st.execute(sql) ;
                      msg="DataBase(" + database_name + ") は無事つくられました。<br>" ;
                    }
                    catch (Exception ex) {
                      msg = "DataBase(" + database_name + ") の作成に失敗しました。<br>【原因】<br>" ;
                      msg += ex.toString() + "<br>";
                    }
            }
    
            public void create_table(){
                    //DataBaseに接続 (JDBC,JavaBean & JSP)テーブルをつくる
                    try {
                      Class.forName(driver);
                      Connection con = DriverManager.getConnection( url,user,pass) ;
                      Statement st = con.createStatement() ;
                      String sql="create table " + table_name + "(id int primary key, name text) ;" ;
                      st.execute(sql) ;
                      msg="Table(" + table_name + ") は無事つくられました。<br>" ;
                    }
                    catch (Exception ex) {
                      msg = "Table(" + table_name + ") の作成に失敗しました。<br>【原因】<br>" ;
                      msg += ex.toString() + "<br>";
                    }               
            }
    
            public void insert(){
                    //DataBaseに接続 (JDBC,JavaBean & JSP)データを入力する
                    try {
                      Class.forName(driver);
                      Connection con = DriverManager.getConnection( url,user,pass) ;
                      Statement st = con.createStatement() ;
                      String sql = "INSERT INTO " + table_name + " VALUES (" + id +  ",'" + name +"');" ;
                      int result = st.executeUpdate(sql) ;
                      msg  = Integer.toString(result) + "件 登録しました。<br>" ;
                      
                    }
                    catch (Exception ex) {
                      msg = "データの登録に失敗しました。<br>【原因】<br>" ;
                      msg += ex.toString() + "<br>";
                    }
                    msg += "入力したデータは<br>" ;
                    msg += "id=" + id + "&nbsp; name=" + name + "<br>";     
                    msg += "でした。" ;     
            }
    
            public void select(){
                    //DataBaseに接続 (JDBC,JavaBean & JSP)データを検索する
                    try {
                            sql = "SELECT * FROM " + table_name ;   
                            if (id == 0) {
                                    sql += ";" ;
                            } else {
                                    sql += " WHERE id=" + id +  ";" ;
                            }
                            execsql() ;
                            msg  = "<table border=\"1\"><tr><td>id</td><td>name</td></tr>" ;
          
                            while(rs.next()) {
                                    msg += "<tr>";
                                    msg += "<td>" + rs.getString("id")   + "</td>";
                                    msg += "<td>" + rs.getString("name") + "</td>" ;
                                    msg += "</tr>" ;
                            }
                            msg += "</table>" ;
                      
                            }
                            catch (Exception ex) {
                                    msg = "データの検索に失敗しました。<br>【原因】<br>" ;
                                    msg += ex.toString() + "<br><br>";
                                    msg += "入力したデータは<br>" ;
                                    msg += "id=" + id + "&nbsp; name=" + name + "<br>";     
                                    msg += "でした。" ;                       
                            }
            }
            
            public void any_sql(){
                    try {
                            execsql() ;
                            msg  = "<br>" ;
                            if(rs.wasNull()) {
                                    msg += "SQLを実行しました。<br>" ;                              
                            } else {
                                    msg += "<table border=\"1\"><tr><td>id</td><td>name</td></tr>" ;
                                    while(rs.next()) {
                                            msg += "<tr>";
                                            msg += "<td>" + rs.getString("id")   + "</td>";
                                            msg += "<td>" + rs.getString("name") + "</td>" ;
                                            msg += "</tr>" ;
                                    }
                                    msg += "</table>" ;
                            }
                    }
                    catch (Exception ex){
                            msg = "データの検索に失敗しました。<br>【原因】<br>" ;
                            msg += ex.toString() + "<br><br>";
                            msg += "入力したデータは<br>" ;
                            msg += "id=" + id + "&nbsp; name=" + name + "<br>";     
                            msg += "でした。" ;
                    }
            }
            
            public void execsql(){
                    try {
                            Class.forName(driver);
                            Connection con = DriverManager.getConnection( url,user,pass) ;
                            Statement st = con.createStatement() ;
                            rs = st.executeQuery(sql) ;
                    } 
                    catch (Exception ex){
                            e = ex ;
                    }
            }
    }

eclipse logoEclipse もっと簡単にDataBase !! DataBaseに接続 (JDBC & JavaBean)データベースをつくる