본문 바로가기

Java + Oracle

[210928] 오라클 접속을 위한 계정 정보가 있는 파일 생성

[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