gpffh1011

Statement(JDBC) 본문

자바/관련상식

Statement(JDBC)

gpffh1011 2020. 6. 24. 18:39

JDBC란 이클립스나 스프링툴 등에서 자바언어로 DB에 접속하고 SQL문을 처리하고자 할 때 사용되는 인터페이스이다.

 

접속하려는 DBMS 서버에 따른 드라이버가 필요하다.

 

(https://gpffh1011.tistory.com/78에서 드라이버에 관한 설명추가로 설명 확인)

 

 

JDBC 구현

 

1. JDBC 드라이버 로딩

Class.forName("com.mysql.cj.jdbc.Driver");

우선 JDBC 드라이버를 사용할 수 있도록 메모리에 로딩 해야한다.

forName() 메소드의 인자값으로는 MySQL의 JDBC드라이버를 사용했다.

 

 

 

2,3,4. DBMS 서버와 연결 & SQL전송 & 처리결과 반환

Connection connection = DriverManager.getConnection("url", "user", "password");

DriverManager.getConnection() 메소드에 의해 데이터베이스와 자바프로그램이 연결 되며, 연결에 성공시 상태를  Connection 객체로 반환한다. (Connection : DB 연결 객체)

 

이 연결에서 Statement 객체를 통해 자바프로그램은 DB에게 SQL문을 전송하고, DB는 자바 프로그램에게 처리 결과를 전송한다. Statement 를 사용하기 위해 Statement 객체를 생성 해야한다. (Statemet : SQL 문 실행 객체)

Statement stmt = connection.createStatement();

 

아래는 현재 연습중인 article을 작성하는 코드를 가져와 보았다.('번호, 작성날짜, 제목, 내용, 회원아이디, 게시판종류' 를 받아 DB에 저장하는 코드/일부만 가져왔기 때문에 빠진코드 많음)

자바프로그램(eclips)에서 DB에게 INSERT, DELETE, UPDATE 등의 SQL문을 전송하고,

ResulSet 를 통해 결과 값을 받아온다. (ResultSet : SQL문의 결과를 가지는 객체)

public class ArticleDao {
	public int save(Article article) {
        StringBuilder sb = new StringBuilder();

        sb.append(String.format("INSERT INTO article "));
        sb.append(String.format("SET regDate = '%s' ", article.getRegDate()));
        sb.append(String.format(", `title` = '%s' ", article.getTitle()));
        sb.append(String.format(", `body` = '%s' ", article.getBody()));
        sb.append(String.format(", `memberId` = '%d' ", article.getMemberId()));
        sb.append(String.format(", `boardId` = '%d' ", article.getBoardId()));

        return dbConnection.insert(sb.toString());
    }
}


public class DBConnection {
	public int insert(String sql) {
		int id = -1;

		try {
			Statement stmt = connection.createStatement();
			stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
			ResultSet rs = stmt.getGeneratedKeys();

			if (rs.next()) {
				id = rs.getInt(1);
			}

		} catch (SQLException e) {
			System.err.printf("[SQL 예외, SQL : %s] : %s\n", sql, e.getMessage());
		}

		return id;
	}
}

 

5. 연결 해제

DB를 사용 후 관련 객체들을 메모리에서 해제 시킨다.

getDBConnection().close();

 

위는 연습중인 코드로 한번에 해제 시켰지만, 정석은 아래 코드와 같이 선입후출의 방식으로 해제 시킨다.

rs.close( )
stmt.close( )
connection.close( )

 

'자바 > 관련상식' 카테고리의 다른 글

패키지(Package) (+나누는 이유)  (0) 2020.06.18
GITHUB  (0) 2020.06.17
JDBC/MySQL Driver  (0) 2020.06.15
[자바 상식] J2EE, JDK, JRE, J2SE 차이  (0) 2020.05.14
[자바 상식] CGI와 서블릿 그리고 톰캣  (0) 2020.05.14