JDBC (Java DataBase Connectivity)
란 자바에서 DB 프로그래밍을 하기 위해 사용되는 API
Java Build Path>Libraries>ADD jars
클릭import java.sql.*;
class Jdbctest {
Connection con;
Statement stmt;
ResultSet rs;
String url = "jdbc:oracle:thin:@127.0.0.1:1521:JAVA";
String usr = "JDBC";
String pwd = "JAVA";
Jdbctest(){
// (1) 드라이버 로딩
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("드라이버 로딩 성공");
}catch(ClassNotFoundException cnfe) {
System.out.println("드라이버 로딩 실패");
}
// (2) DB와 연결
try{
con = DriverManager.getConnection(url, usr, pwd);
System.out.println("DB와 연결 성공");
}catch(SQLException se) {
System.out.println("DB와 연결 실패");
}
// (3) Statement 생성
try {
stmt = con.createStatement();
System.out.println("stmt와 생성 성공");
}catch(SQLException se) {
System.out.println("stmt와 생성 실패");
}
//createT();
//dropT();
createTnoExist();
//insertD(10, "홍길동", "01012341234");
//insertD(20, "강감찬", "01012341235");
//insertD(30, "이순신", "01012341236");
//updateD(10, "이소담", "01098764423");
//updateD(30, "성진희", "01029874423");
selectD();
}
String tname = "JDBCT";
void createT() {
String sql = "create table " + tname +
"(NO number(2) primary key, NAME varchar2(10), PHONE varchar2(11), RDATE date)";
// (4) Statement 실행
try {
stmt.execute(sql);
System.out.println(tname+" 테이블 생성 성공");
}catch(SQLException se) {
System.out.println(tname+" 테이블 생성 실패 se:"+se);
}
}
void dropT() {
String sql = "drop table " +tname;
// (5) Statement 삭제
try {
stmt.execute(sql);
System.out.println(tname+" 테이블 삭제 성공");
}catch(SQLException se) {
System.out.println(tname+" 테이블 삭제 실패 se:"+se);
}
}
void createTnoExist() {
ResultSet rs = null;
String sql = "select TABLE_NAME from user_tables where TABLE_NAME='"+tname+"'";
try {
rs = stmt.executeQuery(sql);
boolean flag = rs.next();
if(!flag) createT();
System.out.println("조회 성공");
}catch(SQLException se) {
}finally {
try {
rs.close();
}catch(SQLException se) {
System.out.println("조회 실패" + se);
}
}
}
void insertD(int no, String name, String phone) {
String sql = "insert into "+tname+" values("+no+", '"+name+"', '"+phone+"', SYSDATE)";
try {
int i = stmt.executeUpdate(sql); // 내용을 바꾸는 건 executeUpdate, 이는 Update가 되어진 갯수를 리턴함 1개가 업데이트 됐으면 return값은 1이 된다는 말
if(i>0) System.out.println(i+"개의 행이 입력 완료");
else System.out.println("입력 실패");
}catch(SQLException se) {
System.out.println("입력 실패 se:"+ se);
}
}
void updateD(int no, String name, String phone) {
String sql = "update "+tname+" set name='"+name+"', phone='"+phone+"' where NO="+no;
try {
int i = stmt.executeUpdate(sql);
if(i>0) System.out.println(i+"개의 행이 수정 완료");
else System.out.println("수정 실패");
}catch(SQLException se) {
System.out.println("수정 실패 se:"+ se);
}
}
void deleteD(int no) {
String sql = "delete from "+tname+" where NO="+no;
try {
int i = stmt.executeUpdate(sql);
if(i>0) System.out.println(i+"개의 행이 삭제 완료");
else System.out.println("삭제 실패");
}catch(SQLException se) {
System.out.println("삭제 실패 se:"+ se);
}
}
void selectD() {
ResultSet rs = null;
String sql = "select * from " +tname+" order by NO";
try {
rs = stmt.executeQuery(sql);
int count = 0;
System.out.println("NO\tNAME\tPHONE\t\tRDATE");
while(rs.next()) { // 행이 계속 다음으로 넘어가면서 EOF(행이 없는 경우)에 다다를 경우 false, 행이 있으면 true
int no = rs.getInt(1);
String name = rs.getString(2);
String phone = rs.getString(3);
Date rdate = rs.getDate(4);
System.out.println(no+"\t"+name+"\t"+phone+"\t"+rdate);
count++;
}
System.out.println("총 "+count+"개 데이터 검색 완료");
}catch(SQLException se) {
}finally {
try {
rs.close();
}catch(SQLException se) {
}
}
}
public static void main(String[] args) {
Jdbctest jt = new Jdbctest();
}
}
1) 드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
2) Connection 생성 (DBMS와 연결)
String url = "jdbc:oracle:thin:@127.0.0.1:1521:JAVA";
String usr = "scott";
String pwd = "tiger";
Connection con = DriverManager.getConnection(url, usr, pwd);
3) Statement 생성
Statement stmt = con.createStatement();
4) Statement 실행
stmt.execute(DDL);
int i = stmt.executeUpdate(DML);
ResultSet rs = stmt.executeQuery(DQL);
5) ResultSet 생성( 데이터추출 )
ResultSet rs = stmt.executeQuery(DQL);
rs.next();
XXX value = rs.getXXX();
6) 연결객체 닫기
rs.close();
stmt.close();
con.close();