날아라쩡글이의 블로그입니다.

java에서 Insert, select, update, delete사용방법 본문

중앙 HTA (2106기) story/JDBC story

java에서 Insert, select, update, delete사용방법

날아라쩡글이 2021. 10. 20. 21:28
반응형

Insert

  1. 실행할 SQL을 정의한다. 
    • String sql = "insert into tb_table (student_name, student_Score) values(?, ? ) "
  2. Oracle 핵심 JDBC드라이버 클래스를 JVM메모리에 로딩시키기 
    • Oracle 핵심 JDBC 드라이버 클래스가 JVM메모리에 로딩된다.
    • Oracle 핵심 JDBC 드라이버가 JVM의 드라이버 레지스터리에 등록된다. 
    • 드라이버 레지스터리는 JDBM드라이버 정보가 저장되는 곳이다. 
    • DriverManager 클래스를 사용해서 드라이버 레지스터리에 등록된 JDBC드라이버를 사용할 수 있다. 
    • Class.forName("oracle.jdbc.OracleDriver");
  3. Oracle 데이터베이스 접속 URL과 접속계정을 정의한다.
    • 그러나 우리는 2번과 3번은 아까 정적메소드로 만들었기 때문에 생략해도 괜찮다. 
  4. 드라이버 레지스터리에 등록된 oracle JDBC 드라이버를 이용해서 RDBMS와 연결하기 
    • 연결을 담당하는 Connection객체가 획득된다
      • Connection connection = DriverManager.getConnection(url, username, password);
    • 정적메소드로 연결하면 객체가 획득된다. 
      • Connection connection = ConnectionUtil.getConnection();
  5. SQL과 SQL 실행에 필요한 값을 RDBMS로 전송하고 실행결과를 받아오는  PreparedStatement객체 획득하기
    • PreparedStatement pstmt = connection.prepareStatement(sql);
  6. SQL 에 ?(바인딩 변수) 가 있으면 ?에 갯수만큼 preparedStatement객체에 값을 저장한다. 
    • pstmt.setString(1, "을지문덕");
      pstmt.setInt(2, 100);
  7. preparedStatement객체에 저장된 SQL과 값을 RDBMS로 전송하고 실행시킨다. 
    • int executeUpdate()
      • INSERT,UPDATE, DELETE SQL을 RDBMS로 전송/ 실행시킬 떄 사용하는 메소드다.
      • 추가/수정/삭제된 행의 갯수를 반환한다
    • ResultSet executeQuery()
      • SELECT SQL을 RDBMS로 전송/ 실행시킬 떄 사용하는 메소드다.
      • 조회결과를 포함하고 있는 ResultSet객체를 반환한다.
    • int rowCount = pstmt.executeUpdate();
      System.out.println(rowCount + "개의 행이 추가되었습니다.");
  8. 데이터베이스 엑세스 작업이 완료되면 사용했던 자원을 해제 시킨다. 
    • pstmt.close();
      connection.close();
    • 역순으로 해제시켜야한다. 

쿼리가 달라지면 1,6 번빼고는 나머지는 반복이다. 

delet sql 입력방법

  • String sql ="delete from tb_sample_books "
                    + "where book_no = ?";

update sql입력방법

  • String sql = "update tb_sample_books "
                + "set "
                + "book_stock = ?, "
                + "book_on_sale = ? "
                + "where "
                + "book_publisher = ?";

select 입력방법

Scanner scan = new Scanner(System.in);
System.out.println("### 책 검색 프로그램");
System.out.println("### 책 검색할 키워드를 입력하세요  ");
System.out.println("### 키워드: ");
//도서관 검색프로그램의 코드작성

String keyword = scan.next();

1.SQL작성하기 
String sql =" select book_no, book_title, book_writer, book_publisher, book_price, "
+ "    book_discount_price, book_stock, book_on_sale "
+"from tb_sample_books "
+ "where book_title like '%' || ? || '%' " //오라클에서는 % + ? + %를 ||으로 연결됨, 글자연결은 ||를 사용함
+"order by book_no desc ";


 2. Connection객체 생성하기 
Connection connetion = ConnectionUtil.getConnection();

3. PreparedStatement 객체 획득하기
PreparedStatement pstmt = connetion.prepareStatement(sql);


 4. ?에 값 바인딩하기   
SQL에 ? 가 없어서 생략 -- >검색프로그램 구현함 
pstmt.setString(1, keyword);



 5. SQL을 RDBMS로 전송해서 실행시키고, 조회결과가 포함한 ResultSet객체를 획득한다. 
ResultSet rs = pstmt.executeQuery();

 6. ResultSet의 API를 사용해서 조회결과를 추출해서 화면에 출력한다. 

while(rs.next()) { //내용에 없으면 false를 반환함
int no = rs.getInt("book_no");
String title = rs.getString("book_title");
String writer = rs.getString("book_writer");
String publisher = rs.getString("book_publisher");
int price = rs.getInt("book_price");
int discountPrice = rs.getInt("book_discount_price");
int stock = rs.getInt("book_stock");
String onSale = rs.getString("book_on_sale");

System.out.println("책의 번호 : " + no);
System.out.println("책의 제목 : " + title);
System.out.println("책의 저자 : " + writer);
System.out.println("책의 출판사 : " + publisher);
System.out.println("책의 실제가격 : " + price);
System.out.println("책의 판매가격 : " + discountPrice);
System.out.println("책 재고 : " + stock);
System.out.println("책 판매여부 : " + onSale);

System.out.println("-------------------------------------");

}


 7. 사용했던 자원을 해제한다. 
rs.close();
pstmt.close();
connetion.close();
항상 역순으로 닫아줘야한다.

반응형
Comments