ALLYES
[2022년 청년친화형 기업 ESG지원 사업 - 16] 본문
일시 : 2022.09.26
시간 : 9:00 ~ 18:00
오전 : java 시험
오후 : java
오전 망함
오후
JDBC(Java DataBase Connectivity)
- JDBC 연결 단계
- 0. ojdbc.jar 를 프로젝트에 추가
- 프로젝트 우클릭 - build path - configure build path
- c - oracleexe - app - product - jdbc - ojdbc6.jar 추가
- 1. JDBC Driver 동적 로딩 : DBMS 드라이버 로딩
- 동적로딩 : 프로그램이 실행되면 그 즉시 타입이 결정됨
- 동적 로딩을 위해서 메소드 불러오기
- Class.forName("oracle.jdbc.driver.OracleDriver");
- oracle.jdbc.driver - 패키지명
- OracleDriver - 클래스명
- 2. 데이터베이스 연결 : 통로 설정
- DB에 접근하기 위해서 변수를 사용해서 DB url, id, pw 정리하고 사용
- String url ="jdbc:oracle:thin:@127.0.0.1:1521:xe";
- jdbc:oracle:thin : oracle thin driver 사용
- 127.0.0.1 : localhost
- 1521 : Port Number
- xe : DB 별칭
- String id = "hr";
- String pw = "hr";
- Java, DB를 왔다갔다 하면서 데이터를 저장, 전송 : Connection 객체 생성
- 여권처럼 DB 접근 가능한지 정보들을 검사
- ID, PW맞다면 Ok, 틀리다면 Failed
- 3. SQL 쿼리문 실행 : 실행문
- sql파일 생성
- String sql = "INSERT INTO MEMBER values('AA', '1111', '김다예', 24)";
PreparedStatement psmt = conn.prepareStatement(sql);
// preparedStatement 역할 : SQL문 전달 해주는 역할
// 자바, DB 왔다갔다 하는 객체 --> conn
// SQL 실행
int cnt = psmt.executeUpdate();
if(cnt > 0) {
System.out.println("insert 성공");
}
else {
System.out.println("insert 실패");
}
- 4. 연결 종료
- 0. ojdbc.jar 를 프로젝트에 추가
- Java의 오류 2가지
- 컴파일 오류 : Syntax error >> 문법적 오류 발생
- 런타임 오류 : 문법적 오류X >> 실행하면 그 즉시 오류 발생
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Ex01_insert {
public static void main(String[] args) {
// JDBC 연결 순서
// 0.ojdbc.jar 를 프로젝트에 추가
// 1. 드라이버 로딩
// 2. 데이터 베이스 연결
// 3. 쿼리문 실행
// 4. 연결 종료
// 1. 동적로딩을 위해서 메소드 불러오기
try { // try-catch : 예외 처리를 하기 위한 문법
Class.forName("oracle.jdbc.driver.OracleDriver");
// oracle.jdbc.driver - 패키지명
// OracleDriver - 클래스명
// 2. DB연결
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String id = "hr";
String pw = "hr";
Connection conn = DriverManager.getConnection(url, id, pw);
if (conn != null) {
System.out.println("연결 성공");
} else {
System.out.println("연결 실패");
}
// 3. SQL문 전송
String sql = "INSERT INTO MEM values('Two', '0809', '김다나', 26)";
PreparedStatement psmt = conn.prepareStatement(sql);
// preparedStatement 역할 : SQL문 전달 해주는 역할
// 자바, DB 왔다갔다 하는 객체 --> conn
// SQL 실행
int cnt = psmt.executeUpdate();
if (cnt > 0) {
System.out.println("insert 성공");
} else {
System.out.println("insert 실패");
}
// 4. 종료
// 종료 순서 : 가장 마지막에 열어주었던 객체부터 역순부터 닫아줌
if (psmt != null) {
psmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) { // DB정보 확인
System.out.println("sql 오류");
e.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Ex02_update {
public static void main(String[] args) {
Connection conn =null;
PreparedStatement psmt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String id = "hr";
String pw = "hr";
conn = DriverManager.getConnection(url, id, pw);
if (conn != null) {
System.out.println("연결 성공");
} else {
System.out.println("연결 실패");
}
String sql = "UPDATE MEM SET pw = 'AABB' WHERE id = '1111'";
psmt = conn.prepareStatement(sql);
// CRUD
// C : create
// R : Read
// U : Update
// D : Delete
int cnt = psmt.executeUpdate();
if(cnt > 0) {
System.out.println("update 성공");
}
else {
System.out.println("update 실패");
}
if (psmt != null) {
psmt.close();
}
if (conn != null) {
conn.close();
}
//executeUpdate() : 삽입, 삭제, 변경 때 사용 (insert, delete, update)
//executeQuery : select(조회)
} catch (SQLException e) { // DB정보 확인
System.out.println("sql 오류");
e.printStackTrace();
}
catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Ex03_delete {
public static void main(String[] args) {
Connection conn =null;
PreparedStatement psmt = null;
try { // try-catch : 예외 처리를 하기 위한 문법
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String id = "hr";
String pw = "hr";
conn = DriverManager.getConnection(url, id, pw);
if (conn != null) {
System.out.println("연결 성공");
} else {
System.out.println("연결 실패");
}
//SQL문 실행
String sql = "DELETE from mem where id = '1111'";
//SQL 전송
psmt = conn.prepareStatement(sql);
int cnt = psmt.executeUpdate();
if (cnt > 0) {
System.out.println("delete 성공");
} else {
System.out.println("delete 실패");
}
}
catch(ClassNotFoundException e1) {
System.out.println("드라이버오류");
e1.printStackTrace();
}catch (SQLException e) { // DB정보 확인
e.printStackTrace();
}finally {
try {
if (psmt != null) {
psmt.close();
}
if (conn != null) {
conn.close();
}// DB정보 확인
}
catch(SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Ex04_Select {
public static void main(String[] args) {
// 필요한 객체를 선언
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null; // 쿼리의 결과를 담은 객체
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String db_id = "hr";
String db_pw = "hr";
conn = DriverManager.getConnection(url, db_id, db_pw);
// SQL문 실행
String sql = "SELECT * from MEM";
psmt = conn.prepareStatement(sql);
// Selet문일 경우에는 insert, update, delete 문과 다르게
// 조회한 결과를 보여줘야 하기 때문에 새로운 통로 열기
// ResultSet - Cursor
// rs : 커서 객체
rs = psmt.executeQuery();
System.out.println("ID\tPW\tNAME\tAGE");
while (rs.next() == true) {
String id = rs.getString(1);
String pw = rs.getString(2);
String name = rs.getString(3);
int age = rs.getInt(4);
rs.next(); // 커서를 한칸 내리는 역할, Type : boolean
System.out.printf("%s\t%s\t%s\t%d%n", id, pw, name, age);
// %s : 문자열
// %d : 정수
// %f : 실수
// %tH : 날짜/시간
}
} catch (ClassNotFoundException e) {
System.out.println("로딩실패");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("DB연결 실패");
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (psmt != null) {
psmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}'ESG' 카테고리의 다른 글
| [2022년 청년친화형 기업 ESG지원 사업 - 18] (1) | 2022.09.28 |
|---|---|
| [2022년 청년친화형 기업 ESG지원 사업 - 17] (0) | 2022.09.27 |
| [2022년 청년친화형 기업 ESG지원 사업 - 15] (0) | 2022.09.24 |
| [2022년 청년친화형 기업 ESG지원 사업 - 14] (0) | 2022.09.23 |
| [2022년 청년친화형 기업 ESG지원 사업 - 13] (0) | 2022.09.22 |