프로그래밍/JDBC

알기 쉬운 JAVA JDBC CREATE문 작성 방법에 대해 알아보자

byungmin 2020. 6. 11. 15:16

JDBC를 통해 SQL CREATE 문을 작성해보자.

 

이클립스와 ORACLE을 연동하는 방법에 대해 알아보려면 밑에 링크를 확인하자

 

알기 쉬운 JAVA JDBC 연동 방법에 대해 알아보자

JAVA에서 JDBC 연동하는 방법 이클립스환경에서 Oracle 데이터베이스를 연결하는 방법에 대해서 알아보도록 하자. (oracle 11g 설치) JDBC 연동 방법 JDBC(Java Database Connectivity)는 Java 와 Database를 연동..

byungmin.tistory.com

 

먼저 oracle에서 MEMO_TABLE을 만드려고할 때 쿼리를 작성해보면 다음과 같다.

 

SQL문을 통해 MEMO_TABLE 을 생성

SQL CREATE문 작성

SQL developer에서 작성한 쿼리다.  컬럼은 각각 no, name, message, wdate를 넣었다. 실행시키면 테이블이 생성되니까 실행시키지는 말고 이 문장을 JDBC연동해서 이클립스에서 실행시켜보자

 

1. 기본적인 코드 구성

기본적인 코드는 다음과 같다.

 

1) 드라이버 객체화

Class.forName("oracle.jdbc.driver.OracleDriver");

2) DB와 연결

Connection con = DriverManager.getConnection();

3) 실행도구 생성 (sql문을 실행시키기위한 Statement 객체 얻어오기)

Statement stmt = con.createStatement();

4) SQL문 실행

stmt.execute(sql);

5. DB연결 종료(자원 반납)

stmt.close();

con.close();

2. 코드 작성

import java.sql.*;

class JDBCTest {
	public static void main(String[] args) {
    
    	try{
          // 1. 오라클 드라이버 로딩
          Class.forName("oracle.jdbc.driver.OracleDriver");
          System.out.println("Driver Loading Success!!");

          // 2. DB와 연결
          String url="jdbc:oracle:thin:@localhost:1521:XE";
          String user="scott", pwd="tiger";
          Connection con=DriverManager.getConnection(url, user,pwd);
          System.out.println("DB 연결 성공!!");

          // 3. SQL문 작성
          String sql="CREATE TABLE MEMO_TABLE (";
             sql+="no number(4) primary key,";//글번호
             sql+="name varchar2(30) not null,";//작성자
             sql+="msg varchar2(100),";
             sql+="wdate date default sysdate)";

          // 4. sql문을 실행시키기위한 Statement객체 얻어오기   
      	  Statement stmt=con.createStatement();	  

          // 5. Statement의 execute(String sql)메소드를 이용해서 sql문 실행
          boolean b=stmt.execute(sql);
          System.out.println("b="+b);

          System.out.println("Memo테이블 생성 성공!!");

          // 6. DB와 연결된 자원들 반납
          if(stmt!=null) stmt.close();
          if(con!=null) con.close();
          
         }catch(ClassNotFoundException e){
			System.out.println("드라이버 로딩 실패!");
			e.printStackTrace();
	 }catch(SQLException e) {
		System.out.println("SQL오류: Memo테이블이 생성되어 있는지 확인하세요");
		e.printStackTrace();
	 }
        
    }
}

출력 - 테이블 생성 성공

Driver Loading Success!!
DB 연결 성공!!
b=false
Memo테이블 생성 성공!!

boolean execute(String sql) String 타입의 sql문을 실행시킨다.

이때 sql문이 select문이면 true를 반환하고 select문 이외의 문장이면 false를 반환한다.

 

3. 테이블이 생성되었는지 확인

이제 실제로 테이블이 생성됐는지 SQL developer를 통해 확인해보자.

MEMO_TABLE이 생성된 것을 확인할 수 있다.

 

 

 

- 테이블이 생성됐는데 코드를 재실행했을 경우

출력 - 테이블 생성 실패

Driver Loading Success!!
DB 연결 성공!!
SQL오류: Memo테이블이 생성되어 있는지 확인하세요
java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

DB연결은 성공했지만, 테이블을 생성하는 SQL문을 실행할 때 이미 같은 이름의 테이블이 생성되었기 때문에 

SQLSyntaxErrorException이 발생한다.