JAVA 교육/Jdbc

2019/08/06 SQL을 jdbc로 연동

조별하 2019. 8. 6. 13:15

[전 수업] SQL문을 프로시저를 생성하여 사용해 보았다 

[본 수업]프로시저를 생성하여 jdbc로 연동하여 사용해 보자


1. 오라클 DB서버 접근 정보

url          : jdbc:oracle:thin:@localhost:1521:xe
user        : java0514
password : 1234
driver      : oracle.jdbc.driver.OracleDriver

※ 간편하게 찾기 위해 ojdbc6.jar 를 setup폴더에 복사  
  c:\oraclexe\app
    \oracle
    \product
    \11.2.0
    \server
    \jdbc
    \lib

2. java Build Path

Build Path->Configure Build Path->add external jars-> ojdbc6.jar추가

 

 

 

 

 

 

 

3. 변수 설정(Connection,preparedStatement,ResultSet)

 

Connection con= null; 
PreparedStatement pstmt = null;

ResultSet rs=null;
DB연결하는 변수 , SQL문 변환 변수, select 문 조회 변수를 미리 설정해 두자

 
4. try catch문 작성

try{

}catch(Exception e){System.out.println("실패!!");}
finally{//자원반납
try{if(rs!=null){rs.close();}}catch(Exception e){}
try{if(pstmt!=null){pstmt.close();}}catch(Exception e){}
try{if(con!=null){con.close();}}catch(Exception e){}
};
try catch 문으로 오류를 잡을수 있게 해주고
finally 에서 자원 반납을 해준다
(단, 자원반납을 해 줄 때에는 자원받은 순서 반대로 반납)

 

5. 드라이버 로딩

Class.forName(driver);

 

 

6. DB 연결

con=DriverManager.getConnection(url, user, password);
System.out.println("오라클DB 서버연결 성공!!!");
DriverManager 클래스의 getConnection 메소드로 con 변수에 url, user, password를 받는다 

 

7. SQL문 작성

StringBuilder sql= new StringBuilder();
String uname="박지성";
int kor=50,eng=60,mat=65;
int tot=kor+eng+mat;
int aver=tot/3;
String addr="Suwon";

sql.append(" INSERT INTO sungjuk(sno,uname,kor,eng,mat,tot,aver,addr,wdate)");
sql.append(" VALUES (sungjuk_seq.nextval,?,?,?,?,?,?,?,sysdate)");
sql.append 로 SQL문을 넣어주고 그 SQL문에 변하는 값을 ?로 잡아주고,
?값을 다음에 셋팅해준다

 

8. SQL문 변환

pstmt= con.prepareStatement(sql.toString());
sql 문을 String값으로 변환은 해주고 연결되 DB와 호응 시켜 pstmt로 넣어준다

 

pstmt.setString(1, uname);
pstmt.setInt(2, kor);
pstmt.setInt(3, eng);
pstmt.setInt(4, mat);
pstmt.setInt(5, tot);
pstmt.setInt(6,aver);
pstmt.setString(7,addr);
넣어준 다음 ? 의 순서대로 pstmt의 값을 위에서 변수에 할당해준 값을 setting 해 준다

 

9. SQL문 실행

int result= pstmt.executeUpdate();
if(result==0){  
  System.out.println("행추가 실패~~~!!");
}else{
  System.out.println("행추가 성공~~~!!");
}
들어가 줄이 0이면 실패 존재하면 성공

 

행추가에 성공하였다.

 

10. SELECT 문
(드라이버 로딩,DB연결까지 같은 과정)

 

 

StringBuilder sql= new StringBuilder();
sql.append(" SELECT sno,uname,kor,eng,mat,tot,aver,addr,wdate ");
sql.append(" FROM sungjuk ");
sql.append(" ORDER BY sno DESC");
select문 , insert문, update문, delete문 모두 StringBuilder sql에 넣는것은 같은 과정

 

if(rs.next()){
System.out.println("자료가 있으");
do{
System.out.print(rs.getInt("sno")+" ");
System.out.print(rs.getString("uname")+" ");
System.out.print(rs.getInt("kor")+" ");
System.out.print(rs.getInt("eng")+" ");
System.out.print(rs.getInt("mat")+" ");
System.out.print(rs.getInt("tot")+" ");
System.out.print(rs.getInt("aver")+" ");
System.out.print(rs.getString("addr")+" ");
System.out.print(rs.getString("wdate")+" ");
System.out.println();
}while(rs.next());
}else{
System.out.println("자료가 없다아~~~!!");
}
select 문을 조회 할때는 rs= pstmt.executeQuery() 로 넣어주고,
if문으로 re에 다음 커서가 존재하면 re.get자료형으로 변수값을 받아와 출력해 준다 

데이터를 조회하는데 성공