본문 바로가기

언어공부/JDBC&오라클&SQL

JDBC - insert문 실행(statement / preparedStatement 인터페이스 별로 작성)

JDBC -  insert문 실행(statement / preparedStatement 인터페이스 별로 작성)에 대해서 알아보자.

JDBC - insert문 실행

insert문은 테이블에 새로운 레코드를 추가하는 명령어이다. INSERT문을 실행할 때 사용되는 것이 Connection, Statement 인터페이스이다.

 

  • Connection 인터페이스 : 자바와 데이터베이스 사이의 연결을 담당한다.
  • Statement 인터페이스 : SQL문장을 실행한다.

 INSERT문에서는 executeUpdate()메소드를 사용하며, 해당 메소드는 얼마나 많은 레코드들이 변경되었는지를 반환한다. 해당 반환값을 이용해 데이터들이 제대로 추가되었는지를 확인할 수 있다. 여기서는 if문을 사용하여 SQL문 실행을 확인한다.

 

여기서 추가로 Statement 인터페이스와  preparedStatement 인터페이스를 각각 코드를 작성해보았다.

 

Statement와 preparedStatement를 비교했을 때, preparedStatement는 Statement를 상속받았으며 미리 컴파일이 되어있다는 뜻으로, 객체 생성시에 지정된 sql명령어만 실행할 수 있다.(다른 sql문은 실행 못함. 재사용x).

SQL문에서 변수자리에 "?"로 표시하며, set메소드를 통해 값을 설정한다(코드라인이 더 길어진다). Stament보다 가독성이 높고, 성능도 좋으며, 인자값으로 전달이 가능하다는 특징이 있다. 

 

Statement객체는 실행 시 sql명령어를 지정하여 여러 sql구문을 하나의 statement객체로 수행이 가능해 재사용이 가능하다.

 

<insert문 statement인터페이스 사용>

 

 

Class.forName()메소드로 jdbc드라이버를 로드하고, DriverManager.getConnection()로 데이터베이스와 연결한다. con.createStatement()로 stmt 객체를 생성하고, SQL문을 생성해 executeUpdate(sql)로 SQL문장을 실행한다.

 

executeUpdate()메소드는 얼마나 많은 레코드들이 변경되었는지를 반환한다. 해당 반환값을 이용해 데이터들이 제대로 추가되었는지를 확인할 수 있는데, 여기서 반환값이 1이면 올바르게 레코드가 추가된 것이고 그렇지 않으면 추가에 실패한 것이다. Update나 Delete문장에서도 같은 방법으로 실행할 수 있다.

 

실행화면

 

Select문 실행 시 확인 가능하다.

 


<insert문 preparedStatement인터페이스 사용>

 

 

Class.forName()메소드로 jdbc드라이버를 로드하고, DriverManager.getConnection()로 데이터베이스와 연결한다. 여기서 Statement와 다른점은 sql문을 먼저 생성하고 con.prepareStatement(sql);로 쿼리문을 미리 컴파일하여 실행해 pstmt생성한다. 그 후 executeUpdate()를 실행하는데, 해당 메소드는 얼마나 많은 레코드들이 변경되었는지를 반환한다.

 

해당 반환값을 이용해 데이터들이 제대로 추가되었는지를 확인할 수 있는데, 여기서 반환값이 1이면 올바르게 레코드가 추가된 것이고 그렇지 않으면 추가에 실패한 것이다. Update나 Delete문장에서도 같은 방법으로 실행할 수 있다.

 

추가로 values에 ?로 주었는데,  그 뒤에 set메소드를 통해 값을 설정해주면 된다. setString(1,bname)의 전달인자 중 1은 첫 번째물음표를 뜻한다. 만약에 물음표가 여러개면 해당 위치의 물음표를 지정해준다. 뒤에는 해당 물음표에 들어가는 변수값이다. 스캐너 클래스로 검색할 제목을 입력받아 bname변수로 저장하고, 해당 값을 물음표에 설정해준다.

 

실행화면

 

Select문 실행 시 확인 가능하다.