한국어

tc_backup

JDBC를 이용한 데이터베이스 활용법

// 1. 대표 클래스를 로딩한다.
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
System.err.println("클래스 로딩 성공");
}
catch(ClassNotFoundException e){
System.err.println("클래스 로딩 오류 : " + e);
}

// 2. Contection 객체를 얻는다.
try{
con = DriverManager.getConnection(jdbcurl, id, pw);
System.out.println("정상접속");

// 3. Statment 객체를 얻는다.
stmt = con.createStatement();

// 4. SQL 구문을 실행한다.
sql = "create table jdbca(a number, b varchar(20))";
result = stmt.execute(sql);

또는 prepareStatement 인터페이스를 사용할 수 있음
sql = "update friend set name = ?, tel = ?, addr = ?, memo = ? where num = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, inputName);
pstmt.setString(2, inputTel);
pstmt.setString(3, inputAddr);
pstmt.setString(4, inputMemo);
pstmt.setInt(5, inputNum);
pstmt.executeUpdate();

/////////////////////////////////////////////////////////////////////////
DML(insert,update,delete) - execute(String sql);
DDL(create,alter,drop) - executeUpdate(String sql);
DCL(grant,revoke) - execute(String sql)
select - executeQuery(String sql);
-- 자바에서 사용 할 때에는 쿼리문 끝에 세미콜론을 사용하지 않는다.

INSERT INTO table_name (컬럼명, 컬럼명) VALUES (값, 값);
INSERT INTO table_name (컬럼명, 컬럼명) VALUES (값, 값) subquery; // 다중 삽입
UPDATE table_name SET column1 = value, column2 = value WHERE condition;
UPDATE table_name SET column1, column2 = (SELECT column1, column2 FROM table_name WHERE condition) value WHERE condition;
DELETE 테이블명 WHERE 컬럼명 > 3000;
DELETE 테이블명 WHERE 1 = 1;
create table it(
a number primary key,
b varchar2(10)
);
DROP TABLE table_name CASCADE CONSTRAINT
GRANT connect, resource TO test;

/////////////////////////////////////////////////////////////////////////
일반적으로 close 해줘야 하는 것들
if(rst != null) rst.close();
if(stmt != null) stmt.close();
if(con != null) con.close();


JDBC

JDBC 파일 복사하여 놓기)
C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar
파일을 아래 디렉토리 경로에 복사하여 붙여놓는다
C:\Java\jdk6\lib\ext
이유는 위 경로가 자바의 기본 경로이기 때문에 해당 경로에 넣어두게 되면 자바 어디에서든지 사용할 수 있게 된다.

JDBC 버전과 JDK 버전 매치
JDBC 1.0 -<---> JDK 1.2 -- JDBC - ODBC 브릿지
JDBC 2.0 -<---> JDK 1.3 -- Native Code Type X
-- 2.0으로 오면서 'Cursor 관리'가 가능해지면서, 커서의 이동이 next 뿐만 아니라 previous가 가능해졌다.
JDBC 3.0 -<---> JDK 1.4 -- 미들웨어 버전
JDBC 4.0 -<---> JDK 5.0 -- 상용화 버전

///////////////////////////////////////////////////////////////////
Class 정적 로딩과 동적 로딩

Sam s; // 정적 로딩
Class.forName("Sam"); // 동적 로딩

Sam s는 Sam이라는 클래스가 없을 경우 컴파일 시 에러가 나게 되지만, Class.forName()을 사용하게 되면 컴파일 시에는 에러가 나지 않지만 Runtime시 에러가 발생하게 된다.

///////////////////////////////////////////////////////////////////
java.sql 패키지의 DriverManager 클래스
일련의 JDBC 드라이버를 관리하기 위한 기본적인 서비스

기본 연결 예제)
import java.sql.*;
public class JDBCTest{
public JDBCTest(){
// 1. 대표 클래스를 로딩한다.
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException e){
System.err.println("클래스 로딩 오류 : " + e);
}
// 2. Contection 객체를 얻는다.
// jdbcurl : jdbc:oracle:thin:@IP:Port:ListenerName
// jdbcurl : jdbc:oracle:thin:ID/PASS@IP;Port:ListenerName
String jdbcurl = "jdbc:oracle:thin:@192.168.0.33:1521:darkhi";
String id = "scott";
String pw = "tiger";
// 아래처럼 url,id,pw를 결합형으로 사용할 수도 있다.
//String jdbcurl = "jdbc:oracle:thin:scott/tiger@192.168.0.33:1521:darkhi";

try{
Connection con = DriverManager.getConnection(jdbcurl, id, pw);
System.out.println("정상접속");
}
catch(SQLException sqle){
System.out.println("접속오류");
}
}

public static void main(String[] args)
{
new JDBCTest();
}
}

///////////////////////////////////////////////////////////////////

분류 :
Programming
태그 :
조회 수 :
10629
등록일 :
2010.07.07
23:45:27 (*.234.246.12)
엮인글 :
http://www.rain9.com/xe/tc_backup/3935/c09/trackback
게시글 주소 :
http://www.rain9.com/xe/tc_backup/3935
List of Articles
번호 제목 글쓴이 날짜 조회 수
220 [iphone] decrypt 도구 file 엔신 2012-06-11 16581
219 udp tunnel 엔신 2012-06-11 11344
218 ubuntu APM(apache2 php mysql) 설치 방법 엔신 2012-06-11 17247
217 [perl] AES 암호화/복호화 엔신 2012-06-11 19976
216 iPhone code sign 엔신 2012-06-11 9870
215 [excel] 최대 행과 열 엔신 2012-06-11 21596
214 [WMI,VBS] IIS FTP 서버 IPSecurity 설정 확인 엔신 2012-06-11 21332
213 [WMI,VBS] WMI를 이용한 vbs 작성시 Windows 2008에서 오류 해결 엔신 2012-06-11 18606
212 Windows [VBS] xml parsing file 엔신 2011-01-11 19649
211 Windows WMI 엔신 2011-01-07 14049
210 이란과 아랍간의 사이가 나쁜 이유가 뭘까요? [2] 엔신 2010-11-28 12876
209 ETC 메모 엔신 2010-10-30 9847
208 Linux 패키지 파일 만들기 엔신 2010-10-30 11667
207 Programming [JSP] getParameter() 사용시 파라미터가 있고 없고 엔신 2010-07-08 13621
206 DBMS Oracle 요약 엔신 2010-07-08 20501
205 DBMS PL-SQL 엔신 2010-07-08 7339
204 Programming [JSP] JSP 요약 엔신 2010-07-07 31674
» Programming [JSP] JDBC를 이용한 데이터베이스 활용법 엔신 2010-07-07 10629
202 Programming perl http post 엔신 2010-06-07 10719
201 Ambiguous 인터넷 엔지니어링 태스크 포스 file 엔신 2010-04-27 11483