[JDBC] Properties 파일 활용

혜쿰·2023년 7월 31일
0

📌 개념

Properties 파일은 한 라인에 key=value 형식으로 작성하고 .properties 확장자를 붙여 저장한다. 이것은 ID, password 등 개인정보를 코드에 작성해야할 때 보안을 높이기 위해 사용하는 방법이다. Secure coding의 일종이라고 할 수 있다.

📍 사용 방법

1) 파일에 key=value형태로 개인정보를 작성하고 .properties 확장자를 붙여 저장한다.

2) 생성자에 properties를 추가한다.

  • properties.load(newFileInputStream("파일 주소명"));

3) driver, url, user, password 등을 입력해야 할 장소에 파일에 써둔 key값을 쓴다.

  • Class.forName(properties.getProperty("driver"));
  • conn = DriverManager.getConnection(properties.getProperty("url"),
    properties.getProperty("user"),
    properties.getProperty("password"));
                                 

📌 활용

package pack5db;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
import java.util.Properties; // DB 연결정보를 별도의 파일로 작성 후 읽기

public class DbTest5 {
	public DbTest5() {
		try {
			properties.load(new FileInputStream("C:\\work\\jsou\\Java_pro2\\src\\pack5db\\Dbconn.properties"));
		} catch (Exception e) {
			
		}
		dbLoading();
		insertDb();
		selectDb();
	}
	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	private Properties properties = new Properties();
	
	private void dbLoading() {
		try {
			Class.forName(properties.getProperty("driver"));
		} catch (Exception e) {
			System.out.println("로딩 실패 :" +e);
			System.exit(0);
		}
	}
	
	private void selectDb() {
		// DB에 입력된 자료 읽기
		try {
			conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/test","root","seoho123");
			
			String sql = "select * from sangdata";
			pstmt = conn.prepareStatement(sql);
			
			rs = pstmt.executeQuery();
			int count = 0;
			System.out.println("코드\t상품명\t수량\t단가");
			while(rs.next()) {
				System.out.println(rs.getString(1) + "\t" +
						rs.getString(2) + "\t" +
						rs.getString(3) + "\t" +
						rs.getString(4));
				count += 1;
			}
			System.out.println("건 수 :" +count + "개");
		} catch (Exception e) {
			System.out.println("selectDb err : " +e );
		}finally {
			try {
				if (rs != null) rs.close();
				if (pstmt != null) pstmt.close();
				if (conn != null) conn.close();
			} catch (Exception e2) {
				// TODO: handle exception
			}
		}
	}
		
	
	
	
	public static void main(String[] args) {
		new DbTest5();

	}

}

0개의 댓글