[SQLPLUS 진행]
1. 관리자 계정 로그인
sqlplus / as sysdba
2.사용자 생성
CREATE USER SUZI
IDENTIFIED BY A123
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;
3. 권한 부여
GRANT CONNECT, RESOURCE TO SUZI;
4. SUZI로 로그인
CONN SUZI/A123;
5. 테이블 생성
CREATE TABLE SCORE
(HAK VARCHAR2(10) PRIMARY KEY,
NAME VARCHAR2(20) NOT NULL,
KOR NUMBER(3),
ENG NUMBER(3),
MAT NUMBER(3));
[오라클과 자바를 연결할때 참고하는 사용설명서 개념 : OJDBC6.JAR ]
- OJDBC(ORACLE JAVA DATABASE CONNECTIVITY)
뒤에 나오는 숫자가 의미하는 것은? JDK버전의 범위를 의미
JDBC(JAVA DATABASE CONNECTIVITY) : JAVA언어에서 DB를 액세스하는 방법
경로 : C:\app\itwill\product\11.2.0\dbhome_1\jdbc\lib
- OJDBC6 파일을 알집으로 열면 하기와 같이 보인다. 오픈API가 아니기 때문에 소스가 보이지 않고 CLASS가 존재하는 것만 알수있다.
- OracleDriver.class의 위치 : oracle.jdbc.driver.OracleDirver클래스
- 하기의 경로로 붙여넣어야 라이브러리에 추가된다. ( 자신의 PC에 설치된 자바의 JRE와 JDK에 모두 추가해야 한다.)
C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext
C:\Program Files\Java\jre1.8.0_191\lib\ext
- 자바에 반영한 뒤 이클립스로 조회하면 라이브러리에 반영됨
[ORACLE 과 JAVA 연동하기 ]
- 자바에서 오라클을 찾아가는 코딩은 변함이 없다.
- 이렇게 매번 동일한 기능을 수행해야할 때 메소드를 생성한 후, 필요할때마다 메소드를 호출했었다.
- 그런데 메소드로 생성하게 된다면 다른 클래스에서 사용하기 위해서는 객체 생성이 필요하게 되었다.
- 클래스로 이 기능을 생성해서 필요할 때마다 가져다 사용할 것이다.. 매번 메모리를 할당해야 하므로 static으로 만들것이다.
- 디비를 연결하게되면 항상 끊어주는 작업 넣어줘야 한다(.close()). 그렇지않으면 resource를 너무 많이 차지한다.
1. DATABASE를 연결하는 소스코드
DBMS 접속시 사용되는 방식 : THIN, OCI
① THIN : 바로 DB와 연결 진행, 범용성이 높다, 상대적으로 OCI보다 속도가 느림
② OCI (Oracle Call Interface)
- 특정 운영체제 내에서만 돌아가는 Native Module을 통해 DB에 연결
(각 하드웨어/소프트웨어(O/S) 별로 전용의 DB연결 프로그램을 OCI라고 부른다는 소리.)
- 하드웨어 또는 소프트웨어 전용의 Module이다 보니, Thin보다 속도가 빠르다.
2. 데이터베이스 연결 소스 코드
import java.sql.Connection;
import com.db.DBConn;
public class Test1 {
public static void main(String[] args) {
Connection conn = DBConn.getConnection();
//디비를 찾아가서 연결해놓은 파이프라인을 conn에 할당
if(conn==null){
System.out.println("데이터베이스 연결 실패!!");
System.exit(0);
}
System.out.println("데이터베이스 연결 성공!!");
DBConn.close();
}
}
콘솔 실행 결과
3. 데이터베이스 연결 후 DML문 실행
import java.sql.Connection;
import java.sql.Statement;
import com.db.DBConn;
public class Test2 {
public static void main(String[] args) {
//1.
Connection conn = DBConn.getConnection();
if(conn==null){
System.out.println("연결 실패!!");
System.exit(0);
}
//DB연결 방법
//1.DriverManager가 Connection을 설정
//2.Connection이 Statement를 생성(SQL구문을 실행하는 인터페이스)
//3.Statement가 query를 실행(execute)
try {
//2.
Statement stmt = conn.createStatement();
String sql;
//insert문
// sql = "insert into score (hak,name,kor,eng,mat) ";
// sql += "values ('222','이수지',50,20,80)";
//update문
// sql = "update score set name = '김태리', kor=10, eng=10, mat=10 ";
// sql += "where hak = '222'";
//delete문
sql = "delete score where hak='222'";
//3.
int result = stmt.executeUpdate(sql);
//executeUpdate: 잘 실행되면 1, 오류 발생시 0 을 반환한다
if(result==1){
System.out.println("삭제 성공!!");//이 방식으로 입력되는 데이터는 자동커밋
}
} catch (Exception e) {
System.out.println(e.toString());
}
DBConn.close();
}
}
콘솔 실행 결과
오라클 실행 결과
'RDB > Oracle' 카테고리의 다른 글
[Oracle] WITH AS 구문 (0) | 2020.07.08 |
---|---|
[오라클]timestamp를 활용한 데이터 복구 (0) | 2019.06.10 |
[오라클] 불완전복구,log파일복구 (0) | 2019.01.30 |
[오라클] 완전복구, 불완전복구-시간기반,취소기반 (0) | 2019.01.29 |
[오라클]INDEX REBUILD, 지연제약조건, 사용자/PROFILE/PRIVILEGE/ROLE 관리, SQLLDR (0) | 2019.01.28 |