본문으로 바로가기

데이터베이스-2

category 프로그래밍/jsp 2017. 10. 27. 22:29

java program ------JDBC -------DB


JDBC : 하나의 프로그램으로 데이터베이스를 관리할 수 있다. 

오라클을 설치하면 JDBC가 자동으로 설치되고, 이클립스에서 해당 클래스 파일을 복사하면 됨.


오라클 드라이버를 사용하기 위한 ojdbc6_g.jar 파일 복사

이클립스 설정되어 있는 JAVA클래스 패스 : C:\Program Files\Java\jre1.8.0_25\lib



오라클 JDBC 클래스 패스 : C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar


이 파일을 복사하여 java클래스 패스경로에 복사하면 자바프로그램에서 오라클 라이브러리를 이용할 수 있다.



참고 http://naltaengi.tistory.com/26, 

SQL*PLUS 로그인 실패 해결 방법

SCOTT 계정이나 HR 계정으로 로그인을 하려고 했는데 계정이 잠겨있다거나 비밀번호가 생각이 나지 않을 경우!!!!

  • 락(lock)을 풀어주기 위해서는 DBA 권한을 가진 사용자 계정으로 접속을 해야한다.
  • DBA는 기본적으로 계정이 활성화되어 있기 때문에 오라클을 설치했을 때 입력한 암호만 기억한다면 언제든지 로그인할 수 있다.

  • sys 혹은 system 계정으로 로그인 한다.

    C:₩>sqlplus system/[오라클 설치 시 입력한 암호]

  • SCOTT 사용자의 계정의 락(lock)을 해제한다.

    SQL>alter user scott account unlock;

    • ALTER문 : 데이터 베이스 객체의 속성을 변경하기 위한 DDL 명령문(ALTER문 다음에 user가 오면 사용자의 정보를 변경하겠다는 의미이다.)
    • account unlock 명령문 : 잠금을 해제하는 명령문이다.
  • SCOTT 사용자 계정에 설정된 락이 풀렸다면, SCOTT으로 접속할 수 있다. SYSTEM 사용자로 로그인 된 상태라면, connect문을 사용하여 연결을 확인한다.

    SQL> show user

    SQL> connect scott/tiger

    SQL> show user



JDBC 드라이버 로드 :  DriverManager ------- Class.forName("oracle.jdbc.driver.OracleDriver"); 메모리에 오라클드라이버가 로드


데이버베이스 연결 :   Connection ------ DriverManager.getConnection(JDBC URL 계정아이디, 비밀번호): Connection 객체 생성 합니다.


SQL 실행 : Statement ----- connection.createStatement(); Statement객체를 통해 SQL문이 실행 된다.


데이터베이스 연결 해제 -------- ResultSet : statement.executeQuery(), statement.executeUpdate()

     : SQL문의 결과값을 Result객체로 받는다. 


그리고 나서 close로 모두 닫는다. 


 



Statemente 객체




Statement객체     executeQuery() : SQL 실행 후 여러 개의 결과 값 생기는 경우 사용한다. ex) select //반환값은 ResultSet

(interface)        

     executeUpdate() : SQL 실행 후 테이블의 내용만 변경할 경우 사용 ex) insert, delete, update //반환값은 Int


execute쿼리실행후 반환 되는 레코드 셋


executeQuery()-------------->ResultSet-------------------->    BOF

 첫번째 로우 데이터

 두번째 로우 데이터

 세번째 로우 데이터

        ..

N번째 로우 데이터

   EOF



 ResuletSet

 next() : 다음 레코드로 이동

 previous(): 이전 레코드로 이동

 first(): 처음으로 이동

 last(): 마지막으로 이동

 get메소드 : getString, getInt







<%@page import="java.sql.DriverManager"%>

<%@page import="java.sql.ResultSet"%>

<%@page import="java.sql.Statement"%>

<%@page import="java.sql.Connection"%>

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%!

Connection connection;

Statement statement;

ResultSet resultSet;

String driver = "oracle.jdbc.driver.OracleDriver";

String url = "jdbc:oracle:thin:@localhost:1521:xe";

String uid = "scott";

String upw = "tiger";

String query = "select * from member";

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

try{

Class.forName(driver); //오라클드라이버로드

connection = DriverManager.getConnection(url, uid, upw); //jdbc:oracle:thin:@localhost:1521:xe

statement = connection.createStatement();         //커리를 볼수 있는객체

resultSet = statement.executeQuery(query); //select * from member

                                                      반환되는 값(ResultSet) : next, previous,getstring 등등의 데이터를 가져온다.

while(resultSet.next()){  반환되는 데이터  한단계씩 이동

String id = resultSet.getString("id");

String pw = resultSet.getString("pw");

String name = resultSet.getString("name");

String phone = resultSet.getString("phone");

out.println("아이디 : " + id + ", 비밀번호 : " + pw + ", 이름 : " + name + ", 전화번호 : " + phone + "<br />");

}

} catch(Exception e) {

} finally { 역순으로 자원해제

try{

if(resultSet != null) resultSet.close();  

if(statement != null) statement.close();

if(connection != null) connection.close();

} catch(Exception e){}

}

%>

</body>

</html>

'프로그래밍 > jsp' 카테고리의 다른 글

19.데이터베이스-3 (회원가입 및 회원정보 프로그래밍)  (468) 2017.12.09
20. 커넥션풀(DAO,DTO, PrepaaredStatement, 커넥션풀)  (487) 2017.12.08
데이터베이스 -1  (1199) 2017.10.26
16.자바 빈  (1200) 2017.10.24
15.예외처리  (1186) 2017.10.24