[java] Properties 파일을 이용한 JDBC
🏗 Properties 파일을 이용한 JDBC
- 자바 프로그래밍 내부적으로 커넥션을 설정하는 방법 외에 properties파일을 이용해서 JDBC를 사용하는 방법!
- 설정파일을 외부로 빼서 유지보수와 수정을 쉽게 할 수 있음
1. properties 파일 생성
[생성위치] : 프로젝트 src와 같은 위치
[properties 설정 파일]
db.driver=oracle.jdbc.OracleDriver
db.url=jdbc:oracle:thin:@127.0.0.1:1521:xe
db.user=hr
db.pass=hr
db.sql=select * from departments
2. JDBC 연결 할 클래스 생성
[JDBC 연결 클래스]
public class JDBCUsingProps {
public static void main(String[] args) {
//기본 값 초기화
InputStream input = null;
String driver = "";
String url = "";
String user = "";
String password = "";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "";
try {
input = new FileInputStream("db.properties");
//FiledInputStream( "프로퍼티 파일 이름" )
Properties prop = new Properties();
prop.load(input);
driver = prop.getProperty("db.driver");
url=prop.getProperty("db.url");
user=prop.getProperty("db.user");
password=prop.getProperty("db.pass");
sql = prop.getProperty("db.sql");
//props.getProperty() 매소드를 통해 properties파일 내부의 설정을 받아옴
}catch(IOException io) {
io.printStackTrace();
}finally {
try {
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3. ResultSet & ResultSetMetaData로 테이블 값 불러오기
- ResultSet : 쿼리를 실행한 결과문
- ResultSetMetaData : ResultSet에 대한 메타데이타 / 기존에 설정된 정보
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("Connection created : " + conn.getClass().getName());
//Factory Method
stmt = conn.createStatement();
System.out.println("Statement created : " + stmt.getClass().getName());
rs = stmt.executeQuery(sql);
System.out.println("ResultSet created : " + rs.getClass().getName());
ResultSetMetaData md = rs.getMetaData();
for(int i=1; i <= md.getColumnCount();i++)
System.out.print(md.getColumnLabel(i) + " / ");
while(rs.next()) {
for(int i=1; i <= md.getColumnCount(); i++)
System.out.print(rs.getString(i) + "\t \t ");
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[콘솔 출력내용]
Driver Loading Done!
Connection created : oracle.jdbc.driver.T4CConnection
Statement created : oracle.jdbc.driver.OracleStatementWrapper
ResultSet created : oracle.jdbc.driver.OracleResultSetImpl
DEPARTMENT_ID / DEPARTMENT_NAME / MANAGER_ID / LOCATION_ID /
10 Administration 200 1700
20 Marketing 201 1800
30 Purchasing 114 1700
(...)