db기초실습자료

Download Report

Transcript db기초실습자료

데이터베이스 기초 실습
이지훈
목차
• JDBC를 이용한 데이터베이스 연결 순서
• 객체 설명
• Select, Update, Insert, Delete 실행
JDBC를 이용한 데이터베이스 연결 순서
1. JDBC 드라이버 로드
2. 데이터베이스와 연결
3. SQL문 실행
4. 데이터베이스와 연결을 끊는다.
JDBC를 이용한 데이터베이스 연결 순서
• Class.forName() 메소드를 통해 JDBC 드라
이버를 로드한다.
– MySQL :
Class.forName(“com.mysql.jdbc.Driver”);
– Oracle :
Class.forName(“oracle.jdbc.driver.OracleDriver
”);
– MS-SQL :
Class.forName(“sun.jdbc.odbc.JdbcOdbcDrive
r”);
JDBC를 이용한 데이터베이스 연결 순서
• Connection con =
DriverManager.getConnection(url, uid,
pwd);
• 위 구문으로 데이터베이스에 연결하고
getConnection 메소드의 인자 url(JDBC형
식URL), uid(사용자명), pwd(패스워드)를
넣는다.
객체 설명
• Statement 객체
– Statement 객체는 쿼리문을 수행하기 위해 만
드는 객체로 이전 단계에서 생성한
Connection 객체(con)로 접근해서
CreateStatement 메소드를 호출해서 생성한
다.
– Statement stmt = con.createStatement();
객체 설명
• ResultSet 객체
– executeQuery 메소드의 결과를 받는 객체로
다음과 같은 메소드를 통해 이용한다.
– Next() : 현재 행에서 한 행 앞으로 이동
– Previouse() : 현재 행에서 한 행 뒤로 이동
– First() : 현재 행에서 첫 번째 행의 위치로 이동
– Last() : 현재 행에서 마지막 행의 위치로 이동
객체 설명
• PreparedStatement 객체
– PreparedStatement 객체는 지정되지 않은 변
수가 있는 쿼리문을 실행 하기 위해 만드는 객
체로 SQL문에서 값을 지정하지 않고 ? 를 지
정하여 변수 처리를 한다
– String sql = "select * from emp where
empno = ?";
– pstmt = conn.prepareStatement(sql);
– pstmt.setString(1,"7934"); // 값 or 변수사용
객체 설명
• executeQuery 메소드
– Select문과 같이 결과가 있는 쿼리문인 경우에
는 executeQuery 메소드를 사용하고, 결과는
ResultSet객체를 사용한다.
– String str = “select * from member”;
– ResultSet rs = stmt.executeQuery(str);
객체 설명
• executeUpdate 메소드
– Insert, update, delete 문은 내부적으로는 어
떤 변화가 있지만 쿼리문을 수행하고 나서 그
결과가 select처럼 레코드로 돌아오지는 않는
다. 이런 쿼리문들을 수행하기 위해서는
executeUpdate 메소드를 사용한다
– String sql = “delete from member”;
– stmt.executeUpdate();
select 소스 예제
•
•
•
•
•
•
import
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.PreparedStatement;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
•
public class test {
•
static String url;
•
public static void main(String[] args) {
•
•
•
•
Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
•
try{
select 소스 예제
•
•
Class.forName("oracle.jdbc.driver.OracleDriver"); // JDBC 드라이버 로드
conn = DriverManager.getConnection("jdbc:oracle:thin:@203.253.146.198:1521:ORCL", "system", "0000"); // 데이터베이스 연
결(id/pw)
•
•
•
•
•
if(conn==null){
System.out.println("연결실패");
}else{
System.out.println("연결성공");
•
•
•
•
// 출력 준비
String sql = "select * from employee";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
•
// 출력
•
•
•
•
•
•
while(rs.next()){
String Fname = rs.getString(1);
String Lname = rs.getString(3);
System.out.print(Lname+", " + Fname);
}
}
select 소스 예제
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
}catch(ClassNotFoundException ce){
ce.printStackTrace();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{ // 연결 해제(한정돼 있으므로)
if(rs!=null){
rs.close();
if(pstmt!=null){ pstmt.close();
if(stmt!=null){ stmt.close();
if(conn!=null){ conn.close();
}catch(SQLException se2){
se2.printStackTrace();
}
}
}
}
}
}
}
}
삽입예제
•
•
•
•
•
•
import
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.PreparedStatement;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
•
public class test {
•
static String url;
•
public static void main(String[] args) {
•
•
•
•
Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
•
try{
삽입예제
•
•
Class.forName("oracle.jdbc.driver.OracleDriver"); // JDBC 드라이버 로드
conn =
DriverManager.getConnection("jdbc:oracle:thin:@203.253.146.198:1521:ORCL“,"system", "0000"); // 데이
터베이스 연결(id/pw)
•
if(conn==null){
System.out.println("연결실패");
}else{
System.out.println("연결성공");
// 삽입
String isql = "insert into employee (ssn, Fname, dno) values(?,?,?)";
•
•
•
•
•
•
stmt = conn.createStatement();
pstmt = conn.prepareStatement(isql);
pstmt.setInt(1,"123456789");
pstmt.setString(2,"Lee"); // 입력 값이 String형일 때
pstmt.setInt(3,10); // 입력 값이 int형일 때
int insCnt = pstmt.executeUpdate(); // executeUpdate()는 int값 반환
System.out.println(insCnt+"건 삽입");
•
•
•
•
•
•
•
•
}
삽입예제
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
}
}catch(ClassNotFoundException ce){
ce.printStackTrace();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{ // 연결 해제(한정돼 있으므로)
if(rs!=null){
rs.close();
if(pstmt!=null){ pstmt.close();
if(stmt!=null){ stmt.close();
if(conn!=null){ conn.close();
}catch(SQLException se2){
se2.printStackTrace();
}
}
}
}
}
}
}
삭제 예제-중복부분 제거
• // 삭제
• String isql3 = "delete from employee
where DNO=1";
• stmt = conn.createStatement();
• pstmt = conn.prepareStatement(isql3);
• int delCnt = pstmt.executeUpdate();
• System.out.println(delCnt+"건 삭제");
마무리
• 선택, 삽입 예제는 전체 소스를 올리고, 삭
제 부분은 중복 부분을 제거해서 올립니다.
소스 보면 알 수 있을겁니다.
• Update쿼리문, 변경 부분은 일부러 안올렸
습니다. 본인이 직접 해보기 바랍니다.
• 시험에 나올 수도 있으니 꼭 해보시기 바
랍니다.