[210928.21:00]
깃허브에서 쓰면 문제 발생할까 봐 OracleConnect 파일 수정하는 것
1. 메모장에 오라클 클라우드 계정 정보를 적어 oracle_connection.prop 파일을 생성한다.
(경로 : 내가 사용하고 있는 사용자 계정 안)
2. java 클래스에 입력해 두었던 오라클 클라우드 계정 정보를 삭제한다. (여기서는 이해를 위해 주석 처리로 대체)
3. 초기화 블럭으로 계정 정보가 저장 된 prop 파일을 불러서 사용한다.
4. prop 파일 사용으로 필요 없어진 계정 정보와 관련된 구문을 삭제 후 필요한 구문을 작성한다.
( 확인 할 부분
//2. 연결 구성 정보로 데이터베이스 연결(월렛을 이용한 Oracle Cloud에 접속하기 위한 코드)
//2. 연결 구성 정보로 데이터베이스 연결(로컬에 설치한 Oracle에 접속하기 위한 코드)
)
package com.db.conn;
import java.io.*;
import java.sql.*;
import java.util.*;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.pool.OracleDataSource;
public class OracleConnect {
private final String DB_URL = "jdbc:oracle:thin:@testdb_medium?TNS_ADMIN = c:\\Users\\lmry\\eclipse\\Wallet_testDB";
// ㄴ 오라클 클라우드 계정(월렛을 이용한) 연결 용 :
// testdb ~~ -> VSC 접속해서 ORACLE EXPLOERE가서 공유할 계정 등록을 어떻게 했는지 커넥션 정보 보고 그대로 쓰기
private final String LOCAL_URL = "jdbc:oracle:thin:@localhost:1521/XEPDB1";
// ㄴ 로컬 연결 용 (로컬에 오라클 설치한 경우) : 로컬로 연결한 시스템 계정 SYSTEM.XEPDB1 의 커넥션 정보 보고 쓰기
//오라클 클라우드 계정정보 입력 [210928.21:00] 삭제 후 프로퍼티스로 저장한 파일을 불러옴(lmry 폴더확인)
// private final String USERNAME = "user1";
// private final String PASSWORD = "Database4321";
/*
오라클 클라우드 USER1.testdb_medium 데이터베이스
USERNAME : user1
PASSWORD : Database4321
비밀번호 까먹었다면 VSC 시스템계정(또는 admin계정)으로 접속해서 계정비밀번호 바꿈
ALTER USER user1 IDENTIFIED BY Database4321;
근데 바꿨으면 오라클익스플로러에서 user1 데이터베이스의 커넥션 정보도 수정해줘야 함(USER1.testdb_medium 우클릭 업데이트, 비번수정)
*/
// 아래 4줄 월렛을 이용할 때
private Properties info = new Properties();
private OracleDataSource ods = null;
private OracleConnection conn1 = null;
private Statement stat1 = null;
// 아래 3줄 월렛 이용 아닐 때
private Connection conn2 = null;
private Statement stat2 = null;
private String query;
//초기화 블럭으로 prop 파일 부르기 (주석 처리한 user 정보)
{
String userHome = System.getProperty("user.home");
this.info.load(new FileReader(userHome + "/oracle_connection.prop"));
}
public OracleConnect() throws Exception {
/*
* Oracle Database 연결을 위한 과정
* 1. 데이터베이스 연결 구성 정보 생성
* 2. 연결 구성 정보로 데이터베이스 연결
* 3. 생성된 연결정보로 Statement 생성
* 4. 생성된 Statement로 Query 전송
* 5. ResultSet 받아서 필요한 내부 처리 진행
* 6. 모든 내부 처리 완료 후 자원 반납.(close 작업)
*/
// 2. 연결 구성 정보로 데이터베이스 연결(월렛을 이용한 Oracle Cloud에 접속하기 위한 코드)
//prop 불러와서 쓰므로 필요 없어진 구문
// this.info.put(OracleConnection.CONNECTION_PROPERTY_USER_NAME, this.USERNAME);
// this.info.put(OracleConnection.CONNECTION_PROPERTY_PASSWORD, this.PASSWORD);
this.ods = new OracleDataSource();
this.ods.setURL(DB_URL);
this.ods.setConnectionProperties(this.info);
this.conn1 = (OracleConnection) ods.getConnection();
// 2. 연결 구성 정보로 데이터베이스 연결(로컬에 설치한 Oracle에 접속하기 위한 코드)
Class.forName("oracle.jdbc.driver.OracleDriver");
this.conn2 = DriverManager.getConnection(LOCAL_URL,
this.info.getProperty("user"), this.info.getProperty("password"));
//ㄴ oracle_connetion.prop 파일에 있는 user, password 가져와라
// 3. 생성된 연결정보로 Statement 생성
this.stat1 = this.conn1.createStatement();
this.stat2 = this.conn2.createStatement();
}
// 실행한 SQL Query를 외부에서 설정하게 한다.
public void setQuery(String query) {
this.query = query;
}
// 설정된 SQL Query를 실행후 결과를 반환한다.
public ResultSet execute() {
ResultSet rs = null;
//만일 null이면 바로 반환 (null처리)
if(this.query == null) {
return rs;
}
try {
rs = this.stat1.executeQuery(this.query);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public void close() throws SQLException {
// 6. 모든 내부 처리 완료 후 자원 반납.(close 작업)
this.stat1.close(); // this.stat2.close();
this.conn1.close(); // this.conn2.close();
} // 예외 던지면 Sample1 클래스의 close(); 실행하는 곳에서 처리 해주면 된다.
public static void main(String[] args) {
try {
OracleConnect oc = new OracleConnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
[210929] OracleConnect 업데이트
https://talkingpotatosescape.tistory.com/42
[211231] [Spring] oracle_connection.prop 업데이트
(cloud-url 주소의 역슬래쉬 2개 -> 일반 슬래쉬 하나로 변경)
https://talkingpotatosescape.tistory.com/157
'Java + Oracle' 카테고리의 다른 글
[211026] 25일 시험 리뷰 (0) | 2021.10.26 |
---|---|
[210929] OracleConnect 수정, 쿼리 연습문제 풀이 (0) | 2021.09.29 |
[210928] db 연동 연습문제 (0) | 2021.09.28 |
[210927] 자바 코드로 오라클 db 연동 (0) | 2021.09.27 |