1. JDBC 기본
- JDBC(Java Database Connectivity)
- java library(java class)로써 db에 접속하여 CRUD 기능을 수행할 수 있는 API(Application Program Interface)이다.
package sec01.exam01_jdbc;
import java.sql.*;
public class JDBC_Connect01 {
public static void main(String[] args) {
/** ORACLE JDBC Driver Test ***************************/
String driver = "oracle.jdbc.driver.OracleDriver";
/******************************************************/
/** My-SQL JDBC Driver Test **************************/
// String driver ="com.mysql.jdbc.Driver";
/*****************************************************/
try {
Class.forName(driver);
System.out.println("JDBC Driver Loading 성공~!!");
} catch (Exception e) {
System.out.println("JDBC Driver Loading 실패~!!");
e.printStackTrace();
}
}
}
2. JDBC Connection
2-1. forName
package sec01.exam01_jdbc;
public class JDBC_Connect01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 지역변수
String driver = "oracle.jdbc.driver.OracleDriver";
try {
// 예외가 발생할 수 있는 코드 입력
Class.forName(driver);
System.out.println("JDBC Driver Loading 성공~");
} catch(Exception e) {
// 예외 처리 코드 입력
System.out.println("JDBC Driver Loading 실패~");
e.printStackTrace();
}
}
}
https://docs.oracle.com/javase/8/docs/api/index.html java.lang -> classes -> class -> forname
2-2. Connection
- Class 구성 멤버
- 필드
- 생성자
- 메소드
- Interface 구성 멤버
- 상수
- 추상 메소드
- 디폴트 메소드
- 정적 메소드
package sec01.exam01_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class JDBC_Connect02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String driver = "oracle.jdbc.driver.OracleDriver2";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
// 인터페이스 변수 = null;
// 인터페이스 변수 = (해당 인터페이스의)구현객체;
Connection con = null;
try {
// 예외발생 가능 코드
Class.forName(driver); // 클래스(OracleDriver) 객체를 생성한다.
con = DriverManager.getConnection(url, "SCOTT", "TIGER");
System.out.println("데이터베이스 연결 성공~");
} catch (Exception e) {
// 예외처리 코드
System.out.println("데이터베이스 연결 실패~");
}
}
}
https://docs.oracle.com/javase/8/docs/api/index.html java.sql -> interface -> Connection
https://docs.oracle.com/en/java/javase/17/docs/api/java.sql/java/sql/DriverManager.html#getConnection(java.lang.String,java.lang.String,java.lang.String) DriverManager.getConnection
3. JDBC insert
3-1. Eclipse
package sec01.exam01_jdbc;
import java.io.BufferedReader; // 문자 기반의 입출력 보조 시스템
import java.io.InputStreamReader; // ctrl + shift + o
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBC_Insert {
public static void main(String[] args) {
// TODO Auto-generated method stub
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
// 인터페이스 변수 = null;
// 인터페이스 변수 = (해당 인터페이스의)구현객체;
Connection con = null;
Statement stmt = null;
String sql, name, email, tel, no;
try {
// 예외발생 가능 코드
// 1. OracleDriver 객체를 생성
Class.forName(driver); // 클래스(OracleDriver) 객체를 생성한다.
// 2. Connection 객체를 생성
con = DriverManager.getConnection(url, "SCOTT", "TIGER");
// 인터페이스 변수 = 구현객체;
// 3. Statement 객체를 생성
stmt = con.createStatement();
// 테이블에 추가할 내용을 콘솔 창에서 사용자의 입력을 받도록 한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("customer 테이블에 값 입력하기...");
System.out.print("번호 입력: ");
no = br.readLine();
System.out.print("이름 입력: ");
name = br.readLine();
System.out.print("이메일 입력: ");
email = br.readLine();
System.out.print("전화번호 입력: ");
tel = br.readLine();
// insert문을 작성
sql = "insert into customer(no, name, email, tel) values";
sql += "("+no+ ", '"+name+"', '"+email+"', '"+tel +"')";
// 4. Statement 객체의 executeUpdate() 메소드로 sql문 실행
int res = stmt.executeUpdate(sql);
if (res==1) {
System.out.println("Data insert success!");
} else {
System.out.println("Data insert failed!");
}
} catch (Exception e) {
// 예외처리 코드
System.out.println("데이터베이스 연결 실패~");
e.printStackTrace();
} finally {
// 5. db resource(statement 객체, connection 객체)를 메모리에서 제거
try {
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
}
}
}
3-2. SQL Developer
create table customer (
no number(10),
name varchar2(20),
email varchar2(20),
tel varchar2(20)
);
insert into customer(no, name, email, tel)
values (1, 'hong', 'hong@naver.com', '010-1111-2222');
select * from customer;
3-3. Eclipse
3-4. SQL Developer
'~2023.02 > DB(SQL)' 카테고리의 다른 글
서브 쿼리란? (SELECT절 서브 쿼리, FROM절 서브 쿼리, WHERE절 서브 쿼리) (0) | 2022.10.08 |
---|---|
JDBC_02 (0) | 2022.04.29 |
패키지 (0) | 2022.04.15 |
커서와 트리거 (0) | 2022.04.14 |
저장 프로시저와 저장 함수 (0) | 2022.04.14 |