학원/JDBC

10/21 26-7( InsertSQL .statement )

도원결의 2022. 10. 23. 17:41

연결을 넘어서 

이번엔 사용자에게 값을 받아서 입력하고 출력까지 해 볼 거임!

 

public class InsertSQL {
	private Connection conn;
    private Statement stmt;
    private ResultSet rs;   // 결과값도 가져올거얌
    
    public InsertSQL(){  // 생성자에서 오라클 연결
         try{
            Class.forName("oracle.jdbc.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","kosmo","kosmo");
            }
         catch(ClassNotFoundException e){
            System.out.println("드라이버 클래스가 없음");	
            }
         catch(SQLException e) {
			System.out.println("데이터베이스 연결실패");			
		    }
    }
    
    private void execute(){  // 쿼리실행 출력 메소드
    	try{
       		 stmt = conn.createStatement(); // 객체생성
               while(true){   
                      try{  
                         String sql = "INSERT INTO member VALUES('"+getvalue("아이디").toString+"',
                                                                '"+getvalue("비밀번호").toString+"',
                                                                    '"+getvalue("이름").toString+"',
                                                                     SYSDATE)";          
                         int affected = stmt.excuteUpdate(sql);
                         System.out.println(affected +"행이 입력되었습니다.");  // 여기까진 INSERT문 쿼리
                         
                         Stirng sql2 = "SELECT * FROM member";
                         rs = stmt.executeQuery(sql2);

                         while(rs.next()) { 
                                    String id = rs.getString(1);					  
                                    int pass =rs.getInt("password");
                                    String name = rs.getString("name");
                                    Date today = rs.getDate(4);
                                    System.out.println(String.format("%-5s%-11s%-10s%-10s",
                                              id,pass,name,today));
                                     }  				// 여기까진 SELECT문 쿼리
                         }
                        catch(SQLException e) {
                            System.out.println("쿼리문 실행 오류:"+e.getMessage());
                                }
                        catch(NullPointerException e) {
                           System.out.println("오라클 데이터와 연동 끊어짐");
                         break;  // 끝내기
                            }
                }
          }
        catch(SQLException e){
             System.out.println("statement 객체생성 실패");
         }
        finally{
             close();
        } 
     }
    
    private void close() {
		try {
			if (stmt != null) stmt.close();
			if (conn != null) conn.close();
			if (rs != null) rs.close();            
		}catch(SQLException e) {}			
	}/////
    
    private static Scanner sc = new Scanner(System.in);
	public static String getValue(String message) {
		System.out.println(message+"(을)를 입력하세요,종료는 exit ");
		String value = sc.nextLine();
		if("exit".equalsIgnoreCase(value)) {
			return null;
		 }
		return value;     
	 }//////
     
     	public static void main(String[] args) {
		new InsertSQL().execute();		
	}////main
}///class