반응형
https://recollectionis.tistory.com/162
[Java] 이클립스(Eclipse) JDBC (ORACLE) 개발 환경 설정
이번 포스팅은 이클립스와 오라클의 JDBC 연동을 하는 방법입니다.1. 프로젝트에서 [New - Folder] 또는 [Ctrl + N] 으로 폴더를 하나 생성합니다. 생성할 폴더명은 lib로 입력 하고 [Finish] 버튼을 클릭합
recollectionis.tistory.com
위 블로그를 참고해서 eclipse 프로젝트에 jar파일을 적용해주었다.
insert
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JDBCInsert {
public static void main(String[] args) {
//insert
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //주소
String uid = "hr"; //아이디 계정
String upw = "hr"; // 비밀번호
String sql = "insert into auth values(seq_auth.nextval, ?, ?)";
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
//connection
conn = DriverManager.getConnection(url, uid, upw);
//statement객체
pstmt = conn.prepareStatement(sql);
//3. ?값 세팅 - 첫번째부터 1번 순서 (setString, setInt, setDate, setTimestmp)
pstmt.setString(1, "홍길동");
pstmt.setString(2, "프로그래머");
//4. sql 실행 (select문은 executequery문장으로 실행, insert, delete, update문은 executeupdate 메서드로 실행)
int result = pstmt.executeUpdate(); // 성공, 실패 결과를 반환한다.
if(result == 1) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}catch (Exception e) {
//에러 로그 확인
e.printStackTrace();
}finally {
try {
conn.close();
pstmt.close();
} catch (SQLException e) {
System.out.println("close에러");
}
}
}
}
update
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class JDBCUpdate {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
/*스캐너로 값을 입력받기*/
System.out.print("업데이트 하고 싶은 auth_id > ");
int update_id = Integer.parseInt(scan.next());
System.out.print("변경 할 이름 > ");
String update_name = scan.next();
System.out.print("변경 할 직업 > ");
String update_job = scan.next();
//스캐너로 auth_id, name, job을 입력받아서 해당 auth_id의 name, job을 업데이트하는 구문
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //주소
String uid = "hr"; //아이디 계정
String upw = "hr"; // 비밀번호
String sql = "update auth set name = ?, job = ? where auth_id = ?";
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
//connection
conn = DriverManager.getConnection(url, uid, upw);
//statement객체
pstmt = conn.prepareStatement(sql);
/*?값 셋팅*/
pstmt.setString(1, update_name);
pstmt.setString(2, update_job);
pstmt.setInt(3, update_id);
int result = pstmt.executeUpdate(); // 성공, 실패 결과를 반환한다.
if(result == 1) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}catch (Exception e) {
//에러 로그 확인
e.printStackTrace();
}finally {
try {
conn.close();
pstmt.close();
scan.close();
} catch (SQLException e) {
System.out.println("close에러");
}
}
}
}
select
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCselect {
public static void main(String[] args) {
//select
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //주소
String uid = "hr"; //아이디 계정
String upw = "hr"; // 비밀번호
String sql = "select * from auth";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null; // select 결과를 반환받을 객체
try{
//드라이버 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
//conn
conn = DriverManager.getConnection(url, uid, upw);
//pstmt
pstmt = conn.prepareStatement(sql);
//?값이 없기때문에 그냥 바로 sql 실행
rs = pstmt.executeQuery();
while(rs.next()) { //다음 row가 있다면 true
//한 행에 대한 처리를 해줌.
//getInt, getString, getDouble, getTimestamp, getDate
int auth_id = rs.getInt("auth_id");
String name = rs.getString("name");
String job = rs.getString("job");
System.out.println("번호:"+auth_id+", 이름:"+name+", 직업:"+job);
}
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
conn.close();
pstmt.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
method로 빼서 활용
🔸 Main클래스
package jdbc.model;
import java.util.ArrayList;
import java.util.Scanner;
public class MainClass {
//상수
public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
public static final String UID = "hr";
public static final String UPW = "hr";
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
AuthDAO authDAO = new AuthDAO();
while(true) {
try {
System.out.println("₊̣̇.ෆ˟̑*̑˚̑*̑˟̑ෆ.₊̣̇.ෆ˟̑*̑˚̑*̑˟̑ෆ.₊̣̇.ෆ");
System.out.println("메뉴선택 [1. 저장 2. 조회]");
System.out.println("₊̣̇.ෆ˟̑*̑˚̑*̑˟̑ෆ.₊̣̇.ෆ˟̑*̑˚̑*̑˟̑ෆ.₊̣̇.ෆ");
System.out.print(">");
String menu = scan.next();
switch(menu) {
case "1":
System.out.print("이름> ");
String name = scan.next();
System.out.print("직업> ");
String job = scan.next();
int result = authDAO.insertEx(name, job);
if(result == 1) {
System.out.println("정상 입력되었습니다.");
}else {
System.out.println("입력 오류 발생.");
}
break;
case "2":
ArrayList<AuthVO> list = authDAO.selectEx();
for(AuthVO vo : list) {
System.out.println(vo.toString());
}
break;
default:
System.out.println("선택불가능한 번호 입니다.");
break;
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
🔸 AuthDAO에 조회, 저장 method가 있다. DB랑 연결
package jdbc.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class AuthDAO {
//멤버변수
private String url = MainClass.URL;
private String uid = MainClass.UID;
private String upw = MainClass.UPW;
//메서드화
public int insertEx(String name, String job) {
int result = 0;
String sql = "insert into auth values(seq_auth.nextval, ?, ?)";
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, uid, upw);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, job);
result = pstmt.executeUpdate(); // 성공, 실패 결과를 반환한다.
return result;
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
conn.close();
pstmt.close();
} catch (SQLException e) {
System.out.println("close에러");
}
}
return result;
}
//조회 메서드
public ArrayList<AuthVO> selectEx(){
ArrayList<AuthVO> list = new ArrayList<>();
String sql = "select * from auth";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null; // select 결과를 반환받을 객체
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, uid, upw);
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
int auth_id = rs.getInt("auth_id");
String name = rs.getString("name");
String job = rs.getString("job");
AuthVO vo = new AuthVO(auth_id, name, job);
list.add(vo);
}
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
conn.close();
pstmt.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
}
🔸 AuthVO
package jdbc.model;
public class AuthVO {
//특별한 알고리즘을 가진 클래스가 아니라, 조회한 테이블을 저장할 클래스
//1.변수는 은닉하고, 테이블이 가지고 있는 멤버변수를 그대로 사용한다.
//2. getter, setter를 사용
private int auth_id;
private String name;
private String job;
//생성자 - 기본 생성자, 모든 멤버변수를 저장하는 생성자
public AuthVO() {}
public AuthVO(int auth_id, String name, String job) {
super();
this.auth_id = auth_id;
this.name = name;
this.job = job;
}
//getter, setter
public int getAuth_id() {
return auth_id;
}
public void setAuth_id(int auth_id) {
this.auth_id = auth_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
//toString overriding
@Override
public String toString() {
return "AuthVO [auth_id=" + auth_id + ", name=" + name + ", job=" + job + "]";
}
}반응형
'국비지원 > DataBase' 카테고리의 다른 글
| [DB] 18. 프로시저(PROCEDURE) & 트리거(TRIGGER) (0) | 2022.11.25 |
|---|---|
| [DB] 17. PLSQL (0) | 2022.11.25 |
| [DB] 14. 데이터베이스 모델링 (0) | 2022.11.18 |
| [DB] 13. 권한 (Privilege) 사용자 생성 (0) | 2022.11.17 |
| [DB] 12. SEQUENCE & INDEX (0) | 2022.11.16 |