. JDBC


: JDBC(Java DataBase Connectivity) 는 자바 프로그램에서 데이타베이스와 

  연결하여 데이타베이스 관련 작업을 할 수 있도록 해주는 자바 프로그래밍

  인터페이스를 위한 API(Application Programming Interface) 규격이다.

  

  JDBC 는 Driver, DriverManager, Connection, Statement, PreparedStatement,

  CallableStatement, ResultSet, DataSource 등 여러 클래스와 인터페이스로

  구성된 패키지 java.sql 과 javax.sql 로 구성되어 있다.

  

  JDBC는 다음과 같은 데이타베이스 기능을 지원하기 위한 표준 API 를 제공하고 있다.

  

. 데이타베이스를 연결하여 테이블 형태의 자료를 참조

. SQL 문을 질의

. SQL 문의 결과를 처리

. JDBC 역활

: ODBC(Open DataBase Connectivity) 는 JDBC 보다 먼저 마이크로 소프트 사가

 개발한 것으로 C, C++ 등의 언어를 이용하여 DBMS에 독립적으로

 데이타베이스 프로그래밍을 가능하도록 하는 AOI 규격이다.

 JDBC 도 ODBC 와 마찬가지로 DBMS 의 종류에 상관없이 쉽게 SQL 문을 수행하고

 그 결과를 처리하도록 설계되어 있습니다.

 즉 한번 JDBC 로 작성된 프로그램은 Orcale, MySql, SQLServer, DB2 등

 어떤 DBMS 를 사용하든지 소스의 수정을 최소화하여 바로 실행 할 수 있다.

 

 

. JDBC 프로그래밍

: JDBC 프로그래밍 절차

: 일반적으로 Java JDBC 프로그래밍은 6 계로 구성된다.

1. JDBC 드라이버 로드 : Class, forName("oracle,jdbc,driver,OracleDriver");

. 드라이버 이름을 호출하여 DriverManager에 Driver 가

 등록 되고 거기서 Connection 을 얻어 쓸 수 있다.

. API 를 사용하여 로드한 클래스를 런타임에 응용 프로그램에

 동적으로 바인딩됩니다.

. 동적으로 JDBC 드라이브 클래스를 로드하는 것으로

 지정한 드라이버 클래스가 객체화 되고 객체화와 동시에

 자동적으로 DriverManager.registerDriver() 을 호출하여

 DriverManager 에서 관리하는 드라이버 리스트에

 등록이 이루어 진다.

2. 데이타베이스 연결

DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","scott","tiger");

3. SQL 을 위한 Statement 객체 생성 :

Statement stmt = con.createStatement();

4. SQL 문장 실행 : String sql ="select * from testok";

ResultSet result = stmt.executeQuery(sql);

5. 질의 결과 ResultSet 처리

while(result.next())

{

String col1 = result.getString(1);

String col2 = result.getString(2);

int      col3 = result.getInt(3);

}

6. JDBC 객체 연결 해제 result.close();

                                   stmt.close();

                                   con.close();

                                   

                                   

                                   

. JDBC 관련 기본 클래스

패키지 클래스(인터페이스) 클래스 용도 메소드

java.lang Class(C) 지정된 JDBC 드라이버를 forName()

런타임시 메모리에 로드


DriverManager(c) 여러 JDBC 드라이버를 관리하는 getConnection()

클래스로 데이타베이스를 접속하여

연결 객체 반환


java.sql Connection(I) 특정한 데이타베이스 연결 상태를 createStatement()

표현하는 클래스로 질의할 문장 객체를

반환

Statement(I) 데이타베이스에 SQL 질의 문장을 executeQuery()

질의 하여 그 결과인 결과집합(ResultSet)

객체를 반환

ResultSet(I) 질의 결과의 자료를 저장 next();

getString();

getInt();





Eclipse > Window > show view > Data Source Explorer 우클릭 > New 선택


Oracle선택한 상태에서 Name에 New Oracle22 입력 후 Next


<빨간 네모상자를 클릭>


Oracle Thin Driver 선택하고 Oracle Thin Driver22로 드라이브 네임 변경


JAR List 탭에서 Add JAR/Zip 클릭


*추가 하기전 해야할 작업

C:\oracle_2017\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

ojdbc6.jar를 복사하여 세곳에 붙여넣기 해야함.


1. C:\java_2017\java\jdk1.8\jre\lib\ext


2. C:\java_2017\java\jre1.8\lib\ext


3. C:\aajsp_17\apache-tomcat-8.5.11\lib


이제 다시 Add JAR/Zip 클릭시 상황으로 갑니다.

ojdbc6.jar을 선택하고 열기를 클릭해주세요.



<중간창 닫고 마지막으로 위와 같이 수정 후 Finish를 클릭하면 완료됩니다.>



SQL파일 생성


WebContent에서 sql_total로 새폴더를 생성한다.

<생성한 sql_total폴더에서 우클릭 New > Other> 


<SQL File 찾고 Next>


<표시한 부분대로 설정후 Finish를 누르면 SQL파일 생성이 완료된다.>



SQL 쿼리문 Test

<select * from emp;로 쿼리문을 실행하는 모습>

쿼리문을 드래그로 블록 지정하여 Alt+x를 누르면 쿼리가 실행 됨.(결과창은 우측하단)



DataBase와 연결


Eclipse > Window > show view > Navigator순으로 들어가 왼쪽에 Navigator를 열어주고 src내에 dbConnection폴더 하나를 생성한다.


<생성한 dbconnection폴더에서 JavaConnectionTest로 JavaClass를 생성하고 다음 소스를 입력>


package dbConnection;


import java.sql.DriverManager;


public class JavaConnectionTest {

public static void main(String[] args) {

try {

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

System.out.println("드라이버 로드 성공!!!!!");

DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","scott","tiger");

System.out.println("Oracle DB 연결 성공");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}catch (Exception e){

e.printStackTrace();

}

}

}

JavaConnectionTest.java

*실행시 Run on이 아닌 Java Application으로 실행시켜준다.


<Console창에 보기와 같은 메시지가 뜨면 성공>



1. Create

<테이블 생성 쿼리문>

create table testok(

name varchar2(10),

age number(3),

tel varchar2(15),

addr varchar2(10),

id varchar2(10)

);

드래그해서 블록 지정 후 Alt+x를 누르면 실행됩니다.



2. Insert


("나나1",3,"010-1234-4567","제주","나는");

("보라1",2,"110-1234-4567","제주","king");

("보라1",2,"110-1234-4567","제주","king");

("뚜비1",3,"310-1234-4567","인천","뚜삐");

("뚜비3",3,"310-1234-4567","제주","king");

위 데이터를 testok테이블에 삽입



package dbConnection;


import java.sql.Statement;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;


public class JdbcInsert {

static Connection conn;

String sql;

int suu;

PreparedStatement pstmt;

ResultSet rss;

public static void main(String[] args) {

try {

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

System.out.println("드라이버 로드 성공!!!!!");

  conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","scott","tiger");

System.out.println("Oracle DB 연결 성공");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}catch (Exception e){

e.printStackTrace();

}

JdbcInsert mi = new JdbcInsert();

mi.insert("나나1",3,"010-31234-4567","제주","나는");

mi.insert("보라1",2,"010-31234-4567","제주","king");

mi.insert("보라1",2,"010-31234-4567","제주","king");

mi.insert("뚜비1",3,"010-31234-4567","인천","뚜비");

mi.insert("뚜비3",3,"010-31234-4567","제주","king");

}


private void insert(String vName, int vAge, String vTel, String vAddr, String vId) {

sql="insert into testok values(?,?,?,?,?)";

try {

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, vName);

pstmt.setInt(2, vAge);

pstmt.setString(3, vTel);

pstmt.setString(4, vAddr);

pstmt.setString(5, vId);

suu = pstmt.executeUpdate();

System.out.println(suu + "행 저장 성공!!!!");

} catch (Exception e) {

e.printStackTrace();

}

}

}



3. Select

package dbConnection;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;


public class JdbcSelect {

static Connection conn;

PreparedStatement pstmt;

ResultSet rss;

String sql;

int suu;

public static void main(String[] args) {

try {

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

System.out.println("드라이버 로드 성공!!!!!");

  conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","scott","tiger");

System.out.println("Oracle DB 연결 성공");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}catch (Exception e){

e.printStackTrace();

}

JdbcSelect jss = new JdbcSelect();

jss.select();

}

private void select() {

sql ="select * from testok"; 

try {

pstmt = conn.prepareStatement(sql);

rss = pstmt.executeQuery();

while(rss.next()){


String vName = rss.getString("name");

int vAge = rss.getInt("age");

String vTel = rss.getString("tel");

String vAddr = rss.getString("addr");

String b = rss.getString("id");

System.out.println(rss.getRow() + "\t" + 

vName +"\t"+

vAge +"\t"+

vTel +"\t"+

b +"\t"+

vAddr );

}

} catch (Exception e) {

e.printStackTrace();

}

}

}



4. Update

이름이 나나1인 사람의 주소를 캐나다, id를 벤쿠버로 업데이트


package dbConnection;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;


public class JdbcUpdate {

static Connection conn;

PreparedStatement pstmt;

ResultSet rss;

String sql;

int suu;

public static void main(String[] args) {

try {

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

System.out.println("드라이버 로드 성공!!!!!");

  conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","scott","tiger");

System.out.println("Oracle DB 연결 성공");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}catch (Exception e){

e.printStackTrace();

}

JdbcUpdate juu = new JdbcUpdate();

juu.update("나나1","캐나다","벤쿠버");

}


private void update(String vName, String vAddr, String vId) {

sql = "update testok set addr= ?, id= ? where name like ? || '%'";

try {

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, vAddr);

pstmt.setString(2, vId);

pstmt.setString(3, vName);

suu = pstmt.executeUpdate();

System.out.println(suu + " 업데이트 성공 ~~~~");

pstmt = null;

sql = "select * from testok where name like ? || '%'";

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, vName);

rss = pstmt.executeQuery();

while(rss.next()){

System.out.println("Name : "+ rss.getString("name") + " , " + "Addr : " + rss.getString("addr") + "Id : " + rss.getString("id"));

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}



5. Delete

이름이 뚜비3인 사람중 주소가 제주, ID가 king인 사람을 삭제


package dbConnection;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;


public class JdbcDelete {

static Connection conn;

String sql;

int suu;

PreparedStatement pstmt;

ResultSet rss;

public static void main(String[] args) {

try {

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

System.out.println("드라이버 로드 성공");

conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","scott","tiger");

System.out.println("oracle db 연결 성공");

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

JdbcDelete jdd=new JdbcDelete();

jdd.delete("뚜비3","제주","king");

}


private void delete(String vName, String vAddr, String vId) {

sql="delete from testok where name= ? and addr = ? and id = ?";

try {

pstmt=conn.prepareStatement(sql);

pstmt.setString(1, vName);

pstmt.setString(2, vAddr);

pstmt.setString(3, vId);

suu=pstmt.executeUpdate();

System.out.println(suu+"삭제 성공");

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

}


+ Recent posts