자! 오늘은 이클립스를 이용해서 클래스 내에서 오라클 DB내의 데이터를 DML를 이용해서 조작해볼건데욧!
DML란! Data Manipulation Language로 데이터 정의어 입니다. 데이터 정의어에 해당하는 명령어는 4개가 있는데요!
* SELECT : SELECT 는 테이블 내의 데이터를 조회할 때 쓰이는 명령어 입니다.!
- 기본적인 구조는 SELECT 조회을 원하는 컬럼 FROM 테이블 이름 WHERE 조건 입니다.
- SELECT * FROM book WHERE bookname='오라클' => book 이라는 테이블에서 bookname이 오라클인 칼럼을 모두 조회하겠다라는 뜻이 됩니다! , 여기서 *은 all를 뜻합니다.
* UPDATE : UPDATE는 테이블 내의 데이터를 수정할 때 쓰이는 명령어 입니다.!
- 기본적인 구조는 UPDATE 테이블명 SET 칼럼명 = '수정할 값' WHERE 조건 입니다.
- UPDATE book SET bookname = '이클립스' WHERE bookname ='오라클' -> book이라는 테이블에서 bookname이 오라클인것을 이클립스로 수정하겠다~ 라는 것을 뜻합니다.!
* INSERT : INSERT 는 테이블에 데이터를 삽입할 때 쓰이는 명령어 입니다!
- 기본적인 구조는 INSERT INTO 테이블명 넣을 칼럼명 VALUES 넣을 데이터 입니다!
- INSERT INTO book (책ID,책이름,가격) VALUES ('1','홍길동전'.'3000') -> book이라는 테이블 안에 책ID,책이름,가격 이라는 칼럼명에 1,홍길동전,3000을 삽입하는 것입니다 . 테이블 내의 모든 칼럼에 대해 insert할 떄는 칼럼명을 생략 해셔도 됩니다.
* DELETE : DELETE 는 테이블 내 데이터를 삭제 할 때 쓰이는 명령어 입니다.
- 기본적인 구조는 DELETE FROM 테이블명 WHERE 조건 입니다.
- DELETE FROM book WHERE bookname ='이클립스' -> book 이라는 테이블 안에 이클립스라는 bookname을 가진 칼럼을 삭제 한다는 뜻입니다!
자 그럼 이클립스로 들어가서 한번 동작 해봅시다!
우선 이번 예제에서 쓰일 Table을 소개하겠습니다! 칼럼명이 이렇게 되있고!
데이터는 각자 원하는시는대로 채우셔도 상관없습니다!
우선 이클립스에서 오라클 db를 사용하려면 사용할 프로젝트 오른쪽마우스 build path- configuar build path에 들어가
ojdbc 추가 해주시구요!
다음을 작성해 줍니다!
package study02_dml;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import study01.login.User;
public class CRUDtest {
Connection con;
static{// 맨 처음 실행 될때 static 메소드가 가장 먼저 실행되므로 제일 먼저 오라클 driver를 연결할 수있게끔 하였습니다!
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("오라클 연결 성공");
System.out.println();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("해당 클래스를 찾을 수 없습니다.");
}// Driver :가교(다리역할)
}
// Oracle DB와 연동 부분
public void connect(){
String str = "jdbc:oracle:thin:@localhost:1521:orcl"; // 사무실 번지
try {
con = DriverManager.getConnection(str, "madang", "madang");
System.out.println("Connection Success!");
} catch (SQLException e) {
System.out.println("잘못된 db 정보입니다.");
}// Door lock
}
// insert문 수행
public void insert() {
String sql = "INSERT INTO member VALUES('aaa','1111','홍길동','22','서울시','a@a.com')";
try {
Statement stmt = con.createStatement();
stmt.executeUpdate(sql);
System.out.println("정상적으로 insert문을 수행했습니다.");
System.out.println();
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
// select문 실행
public void select() {
String query= "select * from member";
Statement stmt;
try {
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()) {
String id =rs.getString("ID");
String password= rs.getString(2);
String name = rs.getString("NAME");
int age = rs.getInt(4);
String address = rs.getString(5);
String eamil = rs.getString(6);
System.out.printf("아이디 : %8s ,비밀번호 : %s, 이름 : %s, 나이 : %d, 주소 : %s, 이메일 : %s",id, password,name, age,address,eamil);
System.out.println();
}
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
// update문 실행
public void update() {
String sql = "UPDATE member SET address = '부산시' WHERE id = 'aaa'";
try {
Statement stmt = con.createStatement();
stmt.executeUpdate(sql);
System.out.println("정상적으로 update 되었습니다.");
System.out.println();
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
// delete문 실행
public void delete() {
String sql = "DELETE member WHERE id = 'aaa'";
try {
Statement stmt = con.createStatement();
stmt.executeUpdate(sql);
System.out.println("정상적으로 delete 되었습니다.");
System.out.println();
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
public static void main(String[] args) {
CRUDtest st = new CRUDtest();
st.connect();
st.insert();
System.out.println("insert 수행 후");
st.connect();
st.select();
st.connect();
st.update();
System.out.println("update 수행 후");
st.connect();
st.select();
System.out.println();
st.connect();
st.delete();
System.out.println("delete 수행 후");
st.connect();
st.select();
}
}
Statement 가 아닌 PreparedStatement 사용하기!
-PreparedStatement는 statement보다 더 효율적이고 깔끔하게 코드를 작성 할 수있습니다!
sql 쿼리문에 value 자리에 ? 를 넣고
preparedstatement.setString(? index , 넣을 값) 을 통해 좀 더 효율적으로 코드를 짤 수 있습니다
package study02_dml;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import study01.login.User;
public class CRUDtest_Pstmt {
// Statement stmt=null;
PreparedStatement pstmt = null;
Connection con;
static{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("오라클 연결 성공");
System.out.println();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("해당 클래스를 찾을 수 없습니다.");
}// Driver :가교(다리역할)
}
public void connect(){
String str = "jdbc:oracle:thin:@localhost:1521:orcl"; // 사무실 번지
try {
con = DriverManager.getConnection(str, "madang", "madang");
System.out.println("Connection Success!");
} catch (SQLException e) {
System.out.println("잘못된 db 정보입니다.");
}// Door lock
}
public void insert() {
String sql = "INSERT INTO member VALUES(?,?,?,?,?,?)";
try{
pstmt = con.prepareStatement(sql);
pstmt.setString(1, "aaa"); // sql의 1번째 ? 자리에 "aaa" 대입
pstmt.setString(2, "111"); // sql의 1번째 ? 자리에 "aaa" 대입
pstmt.setString(3, "홍길동"); // sql의 1번째 ? 자리에 "aaa" 대입
pstmt.setString(4, "22"); // sql의 1번째 ? 자리에 "aaa" 대입
pstmt.setString(5, "서울시");
pstmt.setString(6, "a@a.com");
int count = pstmt.executeUpdate();
System.out.println("정상적으로 insert문을 수행했습니다.");
System.out.println();
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
public void select() {
String query= "select * from member";
try {
pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
String id =rs.getString("ID");
String password= rs.getString(2);
String name = rs.getString("NAME");
int age = rs.getInt(4);
String address = rs.getString(5);
String eamil = rs.getString(6);
System.out.printf("아이디 : %8s ,비밀번호 : %s, 이름 : %s, 나이 : %d, 주소 : %s, 이메일 : %s",id, password,name, age,address,eamil);
System.out.println();
}
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
public void update() {
String sql = "UPDATE member SET address = ? WHERE id = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1,"부산시");
pstmt.setString(2,"aaa");
pstmt.executeUpdate();
System.out.println("정상적으로 update 되었습니다.");
System.out.println();
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
public void delete() {
String sql = "DELETE member WHERE id = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, "aaa");
pstmt.executeUpdate();
System.out.println("정상적으로 delete 되었습니다.");
System.out.println();
} catch (SQLException e) {
System.out.println("sql 문제입니다.");
}
}
public static void main(String[] args) {
CRUDtest_Pstmt st = new CRUDtest_Pstmt();
st.connect();
st.insert();
System.out.println("insert 수행 후");
st.connect();
st.select();
st.connect();
st.update();
System.out.println("update 수행 후");
st.connect();
st.select();
System.out.println();
st.connect();
st.delete();
System.out.println("delete 수행 후");
st.connect();
st.select();
}
}
질문사항이나 글 내용에 대한 피드백은 언제나 환영입니닷!
'자바 > 오라클 이클립스 연동' 카테고리의 다른 글
DDL! (0) | 2021.03.21 |
---|---|
SubQuery (0) | 2021.03.16 |
오라클 Group by 절과 Join! (0) | 2021.03.15 |
이클립스 - 오라클 연동 (0) | 2021.03.13 |
오라클 설치 (0) | 2021.03.13 |