[JDBC] JDBC

26477 ワード

🍋 JDBC(Java Database Connectivity)


JDBCは、Javaからデータベースへの接続を許可するJava APIである.

🟡 JDBCプログラミングの全体的な流れ


1.実行中のDB
使用するDBを実行しています.これは、ウィンドウ検索ウィンドウで「サービス」を検索し、データベースを検索して実行するかどうかを知ることができます.
2.ドライバマネージャを使用して、特定のデータベースに接続されたオブジェクトを作成します.
    public Connection getConnection() throws SQLException {
    	return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","ora01","oracle_4U");
    }
  • ip:oracleインストールip
  • dbタイプ:oracle
  • id/pw:2番目、3番目のパラメータ値
  • 3.sql文実行可能オブジェクトの生成
        Statement stmt = null;
        stmt = con.createStatement(); //oracle db에 접속된
        				  //Connection객체로 부터 획득
    4.sql文の実行(メソッド呼び出し)
        ResultSet rset = null;
        rset = stmt.executeQuery("select * from dept");
    5.利用結果
        while(rset.next()) {
        	System.out.println(rset.getInt("deptno") + "/" 
        			   + rset.getString("dname") + "/" 
        			   + rset.getString("loc"));
        }
    6.資源返還
    public void close(Connection con, Statement stmt, ResultSet rset) {
        try {
        	if (rset != null) {
        		rset.close();
        		rset = null;
        	}
        	if (stmt != null) {
        		stmt.close();
        		stmt = null;
        	}
        	if (con != null) {
        		con.close();
        		con = null;
        	}
        } catch (SQLException e) {
        	e.printStackTrace();
        }
    }
    
    public void close(Connection con, Statement stmt) {
        try {
             if (stmt != null) {
                   	 stmt.close();
                     stmt = null;
             }
             if (con != null) {
                     con.close();
                     con = null;
             }
        } catch (SQLException e) {
             e.printStackTrace();
        }
    }
    ❗リソースの戻り順が重要❗️
    ResultSet → Statment → Connection

    🟡 dept table crudタスク

  • deleteOne()
  • public void deleteOne() {
        Connection con = null;
        Statement stmt = null;
        		
        try {
        	con = getConnection();
        	stmt = con.createStatement();
        			
        	int result = stmt.executeUpdate
            	     ("DELETE FROM dept WHERE deptno=60");
        			
        	if (result == 1) {
        		System.out.println("삭제 성공");
        	} else {
        		System.out.println("삭제 실패");
        	}
        			
        	if (stmt != null) {
        		stmt.close();
        		stmt = null;
        	}
        	if (con != null) {
        		con.close();
        		con = null;
        	}
        } catch (SQLException e) {
        	e.printStackTrace();
        }
    }
  • updateOne()
  • public void updateOne() {
        Connection con = null;
        Statement stmt = null;
        		
        try {
        	con = getConnection();
        	stmt = con.createStatement();
        		
        	//executeUpdate : insert/update/delete sql문장 처리 메소드
        	int result = stmt.executeUpdate
            	    ("UPDATE DEPT SET loc='평양' WHERE deptno=60");
        			
        	if (result == 1) {
        		System.out.println("수정 성공");
        	} else {
        		System.out.println("수정 실패");
        	}
        } catch (SQLException e) {
        	e.printStackTrace();
        } finally {
        	close(con, stmt);
        }
    }
  • inserOne()
  • public void insertOne() {
        Connection con = null;
        Statement stmt = null;
        	
        try {
        	con = getConnection();
        	stmt = con.createStatement();
        			
        	//executeUpdate : insert/update/delete sql문장 처리 메소드
        	int result = stmt.executeUpdate("insert into dept values 
            				(60, '교육부', '남부')");
        			
        	if (result == 1) {
        		System.out.println("저장 성공");
        	} else {
        		System.out.println("deptno 중복 저장 불허");
        	}
        } catch (SQLException e) {
        	e.printStackTrace();
        } finally {
        	close(con, stmt, null);
    }
  • selectOne()
  • public void selectOne() {
        Connection con = null;
        Statement stmt = null;
        ResultSet rset = null;
        try {
        	con = getConnection();
        	stmt = con.createStatement();
        	rset = stmt.executeQuery("select * from dept where 
            			  deptno=10");
        			
        	if(rset.next()) { 
        		System.out.println(rset.getInt("deptno") + "/" 
        		                  + rset.getString("dname") + "/" 
        				  + rset.getString("loc"));
        	}
        			
        } catch (SQLException e) {
        	e.printStackTrace();
        } finally {
        	close(con, stmt, rset);
        }
    }