Dev log - 56, Java #10, 데이터베이스 #4

박강산·2022년 6월 24일
0

이클립스 MySQL

자바 IO 입출력 클래스

  • 바이트 단위의 입출력 클래스, 파일을 읽고 쓰는데 활용

  • FileInputStream 은 읽기, FileOutputStream 쓰기로 활용

  • 영어는 1Bytes, 한글은 2Bytes(UTF-8 인코딩은 3Bytes), 줄넘김(\n) 또한 2Bytes

  • FileInputStream, FileOutputStream 실습

public class FileInputStreamTest {
	public static void main(String[] args) {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		int totalBytes = 0;
		try {
			try {
				fis = new FileInputStream("test.txt");
				fos = new FileOutputStream("test_copy.txt");
				for (int readByte; (readByte = fis.read()) != -1;) {
					fos.write(readByte);
					System.out.write(readByte);
					totalBytes++;
				}
			} finally {
				fos.close();
				fis.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("\n전체 바이트 수: " + totalBytes + " bytes.");
	}
}

이클립스 자바IO 활용

  • 파일을 불러오는 형태를 활용한 것

  • jdbc.properties 라는 파일을 만들어, 그 안에서 JDBC 내용을 입력

  • Properties 객체를 만들어서 jdbc.properties 파일을 불러와 내용을 담음

  • 만들어진 테이블 내용을 바꿀 때는 ALTER 사용

ALTER TABLE 테이블명 CHANGE '기존테이블 컨텐츠명' '바꿀테이블 컨텐츠명' '테이블 컨텐츠의속성';
  • Properties 실습
package com.varxyz.jv251.dao;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DataSourceManager {
	// final은 선언과 동시에 초기화를 해줘야함, 아니면 에러 생성자에도 만들어야함
	private static final String JDBC_URL;
	private static final String JDBC_USER;
	private static final String JDBC_PASSWD;

	// static initialize
	static {
		Properties props = new Properties(); // Properties 객체 생성
		try {
			props.load(new FileInputStream("jdbc.properties")); // jdbc 파일 불러옴
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		try {
			Class.forName(props.getProperty("JDBC_DRIVER")); // 드라이버 연결
			System.out.println("LOADED DRIVER --->" + props.getProperty("JDBC_DRIVER"));
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		JDBC_URL = props.getProperty("JDBC_URL");
		JDBC_USER = props.getProperty("JDBC_USER");
		JDBC_PASSWD = props.getProperty("JDBC_PASSWD");

		System.out.println("JDBC_URL = " + JDBC_URL);
		System.out.println("JDBC_USER = " + JDBC_USER);
		System.out.println("JDBC_PASSWD = " + JDBC_PASSWD);
	}

	public static void main(String[] args) {
		DataSourceManager manager = new DataSourceManager();
		System.out.println(manager);
	}

		public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWD);
	}

  • 기존 close를 메소드로 작성

    DataSourceManager.close(rs, pstmt, con) 혹은 (pstmt, con) 로 활용

	 
    // close 메서드 생성 (rs 유)
	public static void close(ResultSet rs, PreparedStatement pstmt, Connection con) throws SQLException {
		if (rs != null) {
			rs.close();
		}
		if (pstmt != null) {
			pstmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	// close 메서드 생성 (rs 무)
	public static void close(PreparedStatement pstmt, Connection con) throws SQLException {
		close(null, pstmt, con);
	}
}

profile
안녕하세요. 맡은 업무를 확실하게 수행하는 웹 개발자가 되기 위하여 끊임없이 학습에 정진하겠습니다.

0개의 댓글

관련 채용 정보