JdbcTest04 - 계좌번호 추가하기 : Connection / Statement / ResultSet

조수경·2021년 11월 19일
0

고급자바

목록 보기
56/97
package kr.or.didt.basic;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class JdbcTest04 {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;	
		
		
		try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
			
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe",
					"JSG99","java");
			
			System.out.println("계좌번호 정보 추가하기");
			System.out.println("계좌번호 : ");
			String bankNo = scan.next();
			
			String sql1 = "select * from BANKINFO where bank_no = " + bankNo;
			
			stmt = conn.createStatement();//rql문을 리턴받아서 자바로 출력(통역)
			rs = stmt.executeQuery(sql1);
			
			String val="";
			while(rs.next()){
				val = rs.getString(1);
			}
			
			boolean flag = true;
			while(flag){
			if(val.equals(bankNo)){
				System.out.println("다시 입력 하쇼");
				 bankNo = scan.next();
			  }else{flag = false;}
			}
			
			/*선생님 방식
			 * String bankNo = null;
			 * int count = 0;
			 * do{
			 * System.out.println("계좌번호 : ");
			   bankNo = scan.next();
			   String sql2 = "select count(*) from bankinfo"
			       + "where bank_no = ?";
			       
			 * pstmt2 = conn.prepareStatement(sql2);
			 * pstmt2.setString(1, bankNo);
			 * 
			 * rs = pstmt2.executeQuery();
			 * if(rs.next()){ 
			 * //select문의 결과가 1개의 레코드일 경우 if문 사용가능
			 *    count = rs.getInt("cnt"); //컬럼의 alias로 설정하기
			 * 
			 * }
			 * 
			 *  if(count>0){
			 *  System.out.println(bankNo + "계좌번호는 이미 있는 번호입니다.");
			 *   System.out.println("다시 입력하세요");
			 *    System.out.println()
			 *  }
			 * 
			 * }while();
			 * 
			 * 
			 */
			
			System.out.println("은행명 : ");
			String bankName =  scan.next();
			
			System.out.println("예금주명 : ");
			String bankUser =  scan.next();
			
			String sql2 = "insert into bankinfo(bank_no, bank_name, bank_user_name, bank_date)"
                         + "values('" + bankNo + "', '"+bankName + "','" + bankUser +"', sysdate)";
			
            stmt = conn.createStatement();//연결했다고 알려주기
			
			//select문을 실행할 때는   executeQuery()메서드를 사용하고
			
			//insert, update, delete문과 같이 select문이 아닌 쿼리문을
			//           실행할 때는 executeUpdate()메서드를 사용한다.
			
			//executeUpdate()메서드의 반환값은 작업에 성공한 레코드 수를 반환한다.
			int cnt = stmt.executeUpdate(sql2); //행이 업데이트라 숫자만
			
			//PreparedStatement객체를 이용하는 방법
			// - SQL문을 작성할 때 데이터가 들어갈 자리를 물음표로 표시한다
			String sql = "insert into bankinfo(bank_no, bank_name, bank_user_name, bank_date)"
                    + "values(?, ?, ?, sysdate)";
			
			
			
			System.out.println("반환값 : " + cnt);
			
			if(cnt > 0){
				System.out.println("insert 성공~");
			}else{
				System.out.println("insert 실패!");
			}
			       
                         
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}finally{
			
			if(stmt != null) try {stmt.close();} catch (SQLException e2) {}
			if(conn != null) try {conn.close();} catch (SQLException e2) {}
	  }
	}

}
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보