### : 목차 구분 기호
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드 또는 실습
4. 과제
###################################
1. 이론 및 정보
-----------------------------------
**. JDBC
1. 해당 제품의 DRIVER 구하기
1) 해당 사이트에서 구한다
2) 해당 제품 프로그램에서 제공하기도 한다
2. JAVA와 DB의 연결 테스트
1) 해당 드라이버를 로딩한다 - 인스턴스 생성이 아니라 강제로 메모리에 올리는 것임
jdbc의 표준 문법만 알면 이제 코딩이 가능하다
2) DB와의 작업을 위한 3총사 객체
- Connection : DB와의 연결
- Statement : 명령어 전달 및 실행
- ResultSet : 결과가 있을 경우, 프로그램으로 결과를 가져올 때 사용
3. ResultSet
1) DB로부터 가져온 결과를 임시로 저장하는 객체
2) 하나의 테이블을 저장할 수 있는 구조
3) 연결 지향적(DB와 연결되어 있는 동안만 사용, 임시메모리)
4. PreparedStatement
String sql = "select empno,ename,sal,job,deptno,hiredate"
+ " from emp "
+ "where sal >= " + sal
+ " and deptno = " + deptno
+ " and lower(job) = lower('" + job +"')";
+ "where sal >= " + sal
+ " and deptno = " + deptno
+ " and lower(job) = lower('" + job +"')";
여기서 변수들을 빼고 미리 sql문만 먼저 전달하고
나중에 변수를 전달하게 해주는 역할을 해줌
변수와 같이 섞어서 쓰는 문제를 해결해 줌
변수와 쿼리문 연결해서쓰는 방식(위 방식)으로 하면 SQL Injection 당할 수 있음
-----------------------------------
* DriverManager
개발자가 원하는 DB를 부탁을 하면 연결을 해주는 매니저
DB서버의 위치, 사용자, 패스워드를 이용해서 연결
-----------------------------------
* Statement의 executeQuery() 가 하는 일
1. 문장을 DB에 전달
2. 컴파일 시키고, 실행
3. 답장,결과 까지 받아옴
2. 컴파일 시키고, 실행
3. 답장,결과 까지 받아옴
-----------------------------------
* Statement의 executeUpdate는 insert, update, delete 쓸 때 사용
* Statement의 executeQuery는 select 쓸 때 사용?
-----------------------------------
###################################
2. 설정 및 그 밖에
-----------------------------------
2. 설정 및 그 밖에
-----------------------------------
* 해당 사이트에서 구한다
오라클 사이트 - Download - middelware - jdbc drivers
- Oracle Database 11g Release 2 (11.2.0.4), (11.2.0.3), (11.2.0.2.0), (11.2.0.1.0) drivers
- accecpt
- ojdbc6.jar (2,739,670 bytes) - (SHA1 Checksum: a483a046eee2f404d864a6ff5b09dc0e1be3fe6c)
Classes for use with JDK 1.6. It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types.
다운 받음
다운 받는 사이트에서
JDBC Thin for All Platforms
Download JavaDoc (6,415,512 bytes)
Download JavaDoc (6,415,512 bytes)
Doc도 다운 받음
-----------------------------------
* 해당 제품 프로그램에서 제공하기도 한다 F:\app\jhta\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
위 파일을 사용해도 된다.
-----------------------------------
* eclipse에 ojdbc 복사 및 라이브러리 등록
/jdbcTest/src/lib
에 ojdbc6.jar를 복사해옴
lib 우클릭 - build path - configure build path - libraries - add jars - ojdbc6.jar를 넣음
eclipse안에서만 사용가능한 class path가 됨
-----------------------------------
* oracle.jdbc.OracleDriver는 ojdbc6.jar 안에 있음
-----------------------------------
* 다운 받은 javadoc.zip 압축 풀어서 index.html을 열어보라
거기서 OracleDriver를 찾아 보시요
예제 한개를 복사
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");
("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");
"jdbc:oracle:thin:@myhost:1521:orcl", "scott", "1111"
같은 컴퓨터는 @localhost, 아니면 도메인주소나 IP주소를 넣어라
아래 주소에서 port확인
F:\app\jhta\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
-----------------------------------
* 다른 사람의 DB 연결 방법
1) 포트를 열어 놓아야함
제어판 - 시스템 및 보안 - 방화벽 - 고급설정
- 인바운드 규칙 선택 - 오른쪽에 새 규칙
- 포트 선택 - TCP , 특정포트 1521 - 연결 허용
- 전부체크 - 이름 : 오라클 11g - 끝
2) 오라클에서 설정을 해야함
F:\app\jhta\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
이부분을
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = L4-15)(PORT = 1521))
)
)
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = L4-15)(PORT = 1521))
)
)
자신의 컴퓨터 이름으로 바꾸고 서버를 재부팅 해야함
내컴퓨터 우클릭설정에 컴퓨터 이름있음
클라이언트에서
F:\app\jhta\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
안에
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
중에
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
를 한줄 더 써서
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.14)(PORT = 1521))
원하는 서버를 입력 하라?
@@@오라클 중지
@@@오라클 정지
@@@oracle stop
@@@oracle restart
@@@오라클 재시작
재부팅 방법 1
cmd
lsnrctl stop
lsnrctl start
재부팅 방법 2
실행 - services.msc - Oracle~TNSLisntener 다시 시작 하시오
-----------------------------------
* eclipse에서 DB 연결해서 sql 사용하는 방법
패키지 우클릭 - new - other - sql dev ~ 안에 sql file - next - create버튼
\
-----------------------------------
-----------------------------------
###################################
###################################
3. 소스코드 또는 실습
-----------------------------------
-----------------------------------
3-1
/jdbcTest/src/ConnectionTest.java
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionTest {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
//"jdbc:oracle:thin:@192.168.0.80:1521:orcl",
"scott",
"1111");
if(con != null){
System.out.println("연결 성공");
}
// 반드시 다 사용하면 닫아야함
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.sql.DriverManager;
public class ConnectionTest {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
//"jdbc:oracle:thin:@192.168.0.80:1521:orcl",
"scott",
"1111");
if(con != null){
System.out.println("연결 성공");
}
// 반드시 다 사용하면 닫아야함
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------------------------
3-2
/jdbcTest/src/DBTest1.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBTest1 {
public static void main(String[] args) {
// TODO DB로부터 데이터 읽어오기
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
String sql = "select empno,ename,job,sal from emp order by empno desc";
// sql을 포장해야함, 포장지가 Statement, 그냥 sql을 던져주면 예의에 어긋남
Statement stmt = con.createStatement();
// executeQuery() 가 하는 일
// 1. 문장을 DB에 전달
// 2. 컴파일 시키고, 실행
// 3. 답장,결과 까지 받아옴
ResultSet rs = stmt.executeQuery(sql);
rs.next();
System.out.println(rs.getInt(1)+","
+rs.getString(2)+","
+rs.getString(3)+","
+rs.getInt(4)
);
rs.next();
System.out.println(rs.getInt("empno")+","
+rs.getString("ename")+","
+rs.getString("job")+","
+rs.getInt("sal")
);
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBTest1 {
public static void main(String[] args) {
// TODO DB로부터 데이터 읽어오기
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
String sql = "select empno,ename,job,sal from emp order by empno desc";
// sql을 포장해야함, 포장지가 Statement, 그냥 sql을 던져주면 예의에 어긋남
Statement stmt = con.createStatement();
// executeQuery() 가 하는 일
// 1. 문장을 DB에 전달
// 2. 컴파일 시키고, 실행
// 3. 답장,결과 까지 받아옴
ResultSet rs = stmt.executeQuery(sql);
rs.next();
System.out.println(rs.getInt(1)+","
+rs.getString(2)+","
+rs.getString(3)+","
+rs.getInt(4)
);
rs.next();
System.out.println(rs.getInt("empno")+","
+rs.getString("ename")+","
+rs.getString("job")+","
+rs.getInt("sal")
);
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------------------------
3-3
/jdbcTest/src/DBTest2.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBTest2 {
public static void main(String[] args) {
// TODO 첫번째 예제의 코드 개선
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
//#1
con = UserConnection.getConncection();
/*
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
*/
String sql = "select empno,ename,job,sal from emp order by empno desc";
// sql을 포장해야함, 포장지가 Statement, 그냥 sql을 던져주면 예의에 어긋남
stmt = con.createStatement();
// executeQuery() 가 하는 일
// 1. 문장을 DB에 전달
// 2. 컴파일 시키고, 실행
// 3. 답장,결과 까지 받아옴
rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt("empno")+","
+rs.getString("ename")+","
+rs.getString("job")+","
+rs.getInt("sal")
);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBTest2 {
public static void main(String[] args) {
// TODO 첫번째 예제의 코드 개선
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
//#1
con = UserConnection.getConncection();
/*
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
*/
String sql = "select empno,ename,job,sal from emp order by empno desc";
// sql을 포장해야함, 포장지가 Statement, 그냥 sql을 던져주면 예의에 어긋남
stmt = con.createStatement();
// executeQuery() 가 하는 일
// 1. 문장을 DB에 전달
// 2. 컴파일 시키고, 실행
// 3. 답장,결과 까지 받아옴
rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt("empno")+","
+rs.getString("ename")+","
+rs.getString("job")+","
+rs.getInt("sal")
);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
-----------------------------------
3-4
/jdbcTest/src/DBTest3.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DBTest3 {
public static void main(String[] args) {
// TODO 데이터를 입력받아 검색하는 예제
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
/*
* 급여,부서,업무를 입력받아 검색한다
* 이때 급여는 같거나 크고, 부서와 업무가 같은 직원의
* 사번,이름,업무,부서번호,급여,입사일자 조회
*/
Scanner scan = new Scanner(System.in);
System.out.print("급여 : ");
int sal = scan.nextInt();
System.out.print("부서 : ");
int deptno = scan.nextInt();
System.out.print("업무 : ");
String job = scan.next();
String sql = "select empno,ename,sal,job,deptno,hiredate"
+ " from emp "
+ "where sal >= " + sal
+ " and deptno = " + deptno
+ " and lower(job) = lower('" + job +"')";
// 위 sql이 문제가 있는지 검증
System.out.println(sql);
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
System.out.println("********** 검색 결과 **********");
while(rs.next()){
System.out.println("사번 : " + rs.getInt("empno"));
System.out.println("이름 : " + rs.getString("ename"));
System.out.println("직업 : " + rs.getString("job"));
System.out.println("급여 : " + rs.getInt("sal"));
System.out.println("end");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
//e.printStackTrace();
}
}
}
}
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DBTest3 {
public static void main(String[] args) {
// TODO 데이터를 입력받아 검색하는 예제
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
/*
* 급여,부서,업무를 입력받아 검색한다
* 이때 급여는 같거나 크고, 부서와 업무가 같은 직원의
* 사번,이름,업무,부서번호,급여,입사일자 조회
*/
Scanner scan = new Scanner(System.in);
System.out.print("급여 : ");
int sal = scan.nextInt();
System.out.print("부서 : ");
int deptno = scan.nextInt();
System.out.print("업무 : ");
String job = scan.next();
String sql = "select empno,ename,sal,job,deptno,hiredate"
+ " from emp "
+ "where sal >= " + sal
+ " and deptno = " + deptno
+ " and lower(job) = lower('" + job +"')";
// 위 sql이 문제가 있는지 검증
System.out.println(sql);
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
System.out.println("********** 검색 결과 **********");
while(rs.next()){
System.out.println("사번 : " + rs.getInt("empno"));
System.out.println("이름 : " + rs.getString("ename"));
System.out.println("직업 : " + rs.getString("job"));
System.out.println("급여 : " + rs.getInt("sal"));
System.out.println("end");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
//e.printStackTrace();
}
}
}
}
-----------------------------------
3-5
/jdbcTest/src/DBTest3_up.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class DBTest3_up {
public static void main(String[] args) {
// TODO 데이터를 입력받아 검색하는 예제
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
/*
* 급여,부서,업무를 입력받아 검색한다
* 이때 급여는 같거나 크고, 부서와 업무가 같은 직원의
* 사번,이름,업무,부서번호,급여,입사일자 조회
*/
Scanner scan = new Scanner(System.in);
System.out.print("급여 : ");
int sal = scan.nextInt();
System.out.print("부서 : ");
int deptno = scan.nextInt();
System.out.print("업무 : ");
String job = scan.next();
String sql = "select empno,ename,sal,job,deptno,hiredate "
+ "from emp "
+ "where sal >= ? "
+ "and deptno = ? "
+ "and lower(job) = lower(?)";
// 위 sql이 문제가 있는지 검증
//System.out.println(sql);
// 미리 sql문을 변수제외하고 보냄
stmt = con.prepareStatement(sql);
// 실행하기 전까지 변수를 전달한다
stmt.setInt(1, sal);
stmt.setInt(2, deptno);
stmt.setString(3, job);
rs = stmt.executeQuery();
System.out.println("********** 검색 결과 **********");
while(rs.next()){
System.out.println("사번 : " + rs.getInt("empno"));
System.out.println("이름 : " + rs.getString("ename"));
System.out.println("직업 : " + rs.getString("job"));
System.out.println("급여 : " + rs.getInt("sal"));
System.out.println("end");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {}
}
}
}
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class DBTest3_up {
public static void main(String[] args) {
// TODO 데이터를 입력받아 검색하는 예제
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
/*
* 급여,부서,업무를 입력받아 검색한다
* 이때 급여는 같거나 크고, 부서와 업무가 같은 직원의
* 사번,이름,업무,부서번호,급여,입사일자 조회
*/
Scanner scan = new Scanner(System.in);
System.out.print("급여 : ");
int sal = scan.nextInt();
System.out.print("부서 : ");
int deptno = scan.nextInt();
System.out.print("업무 : ");
String job = scan.next();
String sql = "select empno,ename,sal,job,deptno,hiredate "
+ "from emp "
+ "where sal >= ? "
+ "and deptno = ? "
+ "and lower(job) = lower(?)";
// 위 sql이 문제가 있는지 검증
//System.out.println(sql);
// 미리 sql문을 변수제외하고 보냄
stmt = con.prepareStatement(sql);
// 실행하기 전까지 변수를 전달한다
stmt.setInt(1, sal);
stmt.setInt(2, deptno);
stmt.setString(3, job);
rs = stmt.executeQuery();
System.out.println("********** 검색 결과 **********");
while(rs.next()){
System.out.println("사번 : " + rs.getInt("empno"));
System.out.println("이름 : " + rs.getString("ename"));
System.out.println("직업 : " + rs.getString("job"));
System.out.println("급여 : " + rs.getInt("sal"));
System.out.println("end");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {}
}
}
}
-----------------------------------
3-6
/jdbcTest/src/DBTest4.java
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 java.util.Scanner;
public class DBTest4 {
public static void main(String[] args) {
// TODO 데이터를 입력(insert)
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
Scanner scan = new Scanner(System.in);
System.out.print("사번 : ");
int empno = scan.nextInt();
System.out.print("이름 : ");
String ename = scan.next();
System.out.print("급여 : ");
int sal = scan.nextInt();
String sql1 = "select empno from emp";
String sql = "insert into emp(empno,ename,sal,hiredate) "
+ "values(?,?,?,sysdate)";
System.out.println(sql);
stmt = con.prepareStatement(sql1);
rs = stmt.executeQuery(sql1);
while(rs.next()){
if( rs.getInt("empno") == empno ){
System.out.println("이미 있는 사번입니다.");
return;
}
}
stmt = con.prepareStatement(sql);
stmt.setInt(1, empno);
stmt.setString(2, ename);
stmt.setInt(3, sal);
// Statement의 executeUpdate는 insert, update, delete 쓸때 사용
int result = stmt.executeUpdate();
if(result > 0){
System.out.println("처리된 레코드의 갯수 : "+ result);
System.out.println("사원 입력 성공");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {}
}
}
}
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DBTest4 {
public static void main(String[] args) {
// TODO 데이터를 입력(insert)
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
Scanner scan = new Scanner(System.in);
System.out.print("사번 : ");
int empno = scan.nextInt();
System.out.print("이름 : ");
String ename = scan.next();
System.out.print("급여 : ");
int sal = scan.nextInt();
String sql1 = "select empno from emp";
String sql = "insert into emp(empno,ename,sal,hiredate) "
+ "values(?,?,?,sysdate)";
System.out.println(sql);
stmt = con.prepareStatement(sql1);
rs = stmt.executeQuery(sql1);
while(rs.next()){
if( rs.getInt("empno") == empno ){
System.out.println("이미 있는 사번입니다.");
return;
}
}
stmt = con.prepareStatement(sql);
stmt.setInt(1, empno);
stmt.setString(2, ename);
stmt.setInt(3, sal);
// Statement의 executeUpdate는 insert, update, delete 쓸때 사용
int result = stmt.executeUpdate();
if(result > 0){
System.out.println("처리된 레코드의 갯수 : "+ result);
System.out.println("사원 입력 성공");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {}
}
}
}
-----------------------------------
3-7
/jdbcTest/src/DBTest5.java
/jdbcTest/src/DBTest5.java
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 java.util.Scanner;
public class DBTest5 {
public static void main(String[] args) {
// TODO 데이터 갱신
Connection con = UserConnection.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Scanner scan = new Scanner(System.in);
System.out.print("사번 : ");
int empno = scan.nextInt();
System.out.print("급여 : ");
int sal = scan.nextInt();
System.out.print("업무 : ");
String job = scan.next();
/*
* 사번을 입력 받아서 급여와 업무를 수정
*/
String sql = "update emp set sal = ?, job = ? where empno = ?";
// 위 sql이 문제가 있는지 검증
System.out.println(sql);
stmt = con.prepareStatement(sql);
stmt.setInt(1, sal);
stmt.setString(2, job);
stmt.setInt(3, empno);
int result = stmt.executeUpdate();
if(result > 0){
System.out.println("처리된 레코드의 갯수 : "+ result);
System.out.println("급여, 업무 UPDATE 성공");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
//e.printStackTrace();
}
}
}
}
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DBTest5 {
public static void main(String[] args) {
// TODO 데이터 갱신
Connection con = UserConnection.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Scanner scan = new Scanner(System.in);
System.out.print("사번 : ");
int empno = scan.nextInt();
System.out.print("급여 : ");
int sal = scan.nextInt();
System.out.print("업무 : ");
String job = scan.next();
/*
* 사번을 입력 받아서 급여와 업무를 수정
*/
String sql = "update emp set sal = ?, job = ? where empno = ?";
// 위 sql이 문제가 있는지 검증
System.out.println(sql);
stmt = con.prepareStatement(sql);
stmt.setInt(1, sal);
stmt.setString(2, job);
stmt.setInt(3, empno);
int result = stmt.executeUpdate();
if(result > 0){
System.out.println("처리된 레코드의 갯수 : "+ result);
System.out.println("급여, 업무 UPDATE 성공");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
// 반드시 다 사용하면 닫아야함
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
//e.printStackTrace();
}
}
}
}
-----------------------------------
3-8
/jdbcTest/src/UserConnection.java
import java.sql.Connection;
import java.sql.DriverManager;
public class UserConnection {
public static Connection getConnection() {
Connection con = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
}
import java.sql.DriverManager;
public class UserConnection {
public static Connection getConnection() {
Connection con = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"1111");
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
}
-----------------------------------
-----------------------------------
###################################
4. 과제
-----------------------------------
###################################
4. 과제
-----------------------------------
-----------------------------------
###################################
5. 과제 해결
-----------------------------------
5. 과제 해결
-----------------------------------
-----------------------------------
###################################
6. 기타
----------------------------------- -----------------------------------
'OpenFrameWork' 카테고리의 다른 글
오픈프레임워크_Day30 (0) | 2015.04.24 |
---|---|
오픈프레임워크_Day00 (0) | 2015.04.23 |
오픈프레임워크_Day28 (0) | 2015.04.22 |
오픈프레임워크_Day27 (0) | 2015.04.21 |
오픈프레임워크_Day26 (0) | 2015.04.20 |