반응형

이번에는 Statement가 아닌 PreparedStatement를 활용하여 

데이터를 핸들링하는 예제를 작성해보자.


JdbcConnector.java

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.bean.UserBean;


public class JdbcConnector {
	
	public static Connection getConnection() throws ClassNotFoundException, SQLException{
		
		//DB 종료에 따른 JDBC DRIVER 클래스
		Class.forName("com.mysql.jdbc.Driver");
		
		//DB접속 url
		String url = "jdbc:mysql://localhost/test";
		//DB접속 ID
		String id = "root";
		//DB접속 패스워드
		String pw = "1234";
		
		//접속정보로 JDBC 연결 커넥션 생성
		Connection conn = DriverManager.getConnection(url,id,pw);
		
		return conn;
	}
	public static void main(String args[]) throws ClassNotFoundException, SQLException {
		//커넥션생성
		Connection conn = getConnection();
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		UserBean user = new UserBean();
		user.setId("pby0716");
		user.setName("박병영");
		user.setEmail("pby0716@naver.com");
		
		String sql1 = "INSERT INTO MEMBER(ID,NAME,EMAIL) VALUES (?,?,?)";
		
		//PreaparedStatement 생성 후 실행할 쿼리정보 등록
		pstmt = conn.prepareStatement(sql1);
		
		//?에 대한 하는 가변부분 셋팅
		pstmt.setString(1, user.getId());
		pstmt.setString(2, user.getName());
		pstmt.setString(3, user.getEmail());
		
		int count = pstmt.executeUpdate();
		if(count > 0) {
			System.out.println("Insert 성공");
		}else {
			System.out.println("Insert 실패");
		}
		
		/*Insert 한 데이터를 조회하는 예제*/
		
		//받아올 id를 담으면 된다. 지금은 예제로써 임의로 담아두었다.
		String id = "pby0716";
		
		//실행 쿼리
		String sql2 = "SELECT ID, NAME, EMAIL FROM MEMBER WHERE ID = ?";
		//PreaparedStatement 생성 후 실행할 쿼리정보 등록
		pstmt = conn.prepareStatement(sql2);
		//위 sql에 담겨있는 쿼리에 가변하는 변수(id)를 세팅하는 부분
		pstmt.setString(1, id);
		
		//결과를 담을 ResultSet 생성 후 결과 담기
		rs = pstmt.executeQuery();
		
		//결과를 담을 ArrayList생성
		ArrayList<UserBean> list = new ArrayList<UserBean>();
		
		//ResultSet에 담긴 결과를 ArrayList에 담기
		while(rs.next()) {
			UserBean bean = new UserBean();
			bean.setId(rs.getString("ID"));
			bean.setName(rs.getString("NAME"));
			bean.setEmail(rs.getString("EMAIL"));
			list.add(bean);
		}
		//결과물 출력
		for(int i=0; i<list.size(); i++) {
			System.out.println("회원아이디:"+list.get(i).getId());
			System.out.println("회원이름:"+list.get(i).getName());
			System.out.println("회원이메일:"+list.get(i).getEmail());
		}
	}
}

이전에 사용했던 Statement와 PreparedStatement의 차이가 무엇일까?


Statement의 경우에는 완성형 쿼리를 담아서 실행을 하게되지만,

PreparedStatement의 경우에는 가변처리되어야하는 부분에 대해서 ?로 처리하여 쿼리를 바인딩한 후에도 핸들링하여 사용할 수 있다.


완전한 쿼리가 실행될때는 Statement객체를 사용하는 것이 속도측면에서 빠르며,

불완전한 쿼리를 가변처리를 하며 반복적으로 사용할 경우에는 PreparedStatement객체를

사용하는 것이 빠르다.


예제소스에서도 보듯이 Statement의 경우에는 실행하기직전에 쿼리를 담아서 컴파일처리를 하며, PreparedStatement의 경우에는 객체 생성시에 쿼리를 미리 담아서 ?에 대한부분을 미리 처리한 후 컴파일해놓고 처리를 한다.


때에 따라서 해당 두가지를 적절히 사용하면, DB속도 및 소프트웨어 속도 면에서 향상된 프로그램을 개발할 수 있다.!


반응형

'IT관련 > JAVA' 카테고리의 다른 글

JAVA에서 JDBC로 SELECT 조회하는 방법(Statement)  (0) 2018.03.16
블로그 이미지

Mr.비타민

,
반응형

JAVA에서 프래그램을 작성하다보면 DB에 연결하여 데이터를 가져와야하는 경우가 많다.


해당 방법을 위하여 Connection 부터 데이터 처리까지의 방법을 확인해보자.



JdbcConnector.java

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import com.bean.UserBean;


public class JdbcConnector {
	
	public static Connection getConnection() throws ClassNotFoundException, SQLException{
		
		//DB 종료에 따른 JDBC DRIVER 클래스
		Class.forName("com.mysql.jdbc.Driver");
		
		//DB접속 url
		String url = "jdbc:mysql://localhost/test";
		//DB접속 ID
		String id = "root";
		//DB접속 패스워드
		String pw = "1234";
		
		//접속정보로 JDBC 연결 커넥션 생성
		Connection conn = DriverManager.getConnection(url,id,pw);
		
		return conn;
	}
	public static void main(String args[]) throws ClassNotFoundException, SQLException {
		//커넥션생성
		Connection conn = getConnection();
		//실행 쿼리
		String sql = "SELECT ID, NAME, EMAIL FROM MEMBER";
		//Statement 생성 후 실행할 쿼리정보 등록
		Statement stmt = conn.createStatement();
		//결과를 담을 ResultSet 생성 후 결과 담기
		ResultSet rs = stmt.executeQuery(sql);
		
		//결과를 담을 ArrayList생성
		ArrayList<UserBean> list = new ArrayList<UserBean>();
		
		//ResultSet에 담긴 결과를 ArrayList에 담기
		while(rs.next()) {
			UserBean bean = new UserBean();
			bean.setId(rs.getString("ID"));
			bean.setName(rs.getString("NAME"));
			bean.setEmail(rs.getString("EMAIL"));
			list.add(bean);
		}
		//결과물 출력
		for(int i=0; i<list.size(); i++) {
			System.out.println("회원아이디:"+list.get(i).getId());
			System.out.println("회원이름:"+list.get(i).getName());
			System.out.println("회원이메일:"+list.get(i).getEmail());
		}
	}
}

UserBean.java

package com.bean;

public class UserBean {
	String id;
	String name;
	String email;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

출력물 : 
회원아이디:pby0716
회원이름:박병영
회원이메일:pby0716@naver.com
회원아이디:qudduddl
회원이름:박병영
회원이메일:young3629@gamil.com


2가지의 데이터가 출력이 된다.

다음장에는 PreparedStatement를 사용하여 Insert, Select를 핸들링하는 방법을 확인해보자.


반응형
블로그 이미지

Mr.비타민

,
반응형

어플리케이션 개발을 하기위해서는 DB연동은 필수 이기때문에,


오늘은 MYSQL을 설치하는 것으로 포스팅합니다!


https://dev.mysql.com/downloads/windows/installer


해당 URL로 접속하여 MYSQL 설치파일을 다운로드 받습니다.




우선 다운로드 버튼을 눌러서 아래 다운로드 페이지로 이동.



우리는 로그인없이 다운로드를 받을것이기 때문에, 아래 부분을 클릭합니다.


다운로드가 완료 되고나면, 파일을 실행하여 설치 스텝을 진행!!



licences 승인 클릭 후 Next~



우리는 개발용으로 쓸것이기때문에 Developer Default 선택후 Next~



본인이 해당하는 사항이 있다면 추가적으로 Execute로 설치를 진행하고,

없다면 과감하게 Next~



본격적으로 MYSQL 설치에 필요한 요소들을 설치를 진행합니다. Execute~



설치가 완료되고나면 Next~



이제 서버로써 필요한 설정정보들을 진행할 단계입니다.

Next~



우리는 별도의 InnoDB Cluster를 사용하지않고 기본형으로 설치를 할것이기에 

Standalone MySQL Server / Classic MySQL Replication을 선택후 Next~



개발용 타입 선택과 연결할 PORT 설정을 본인에 맞게끔 설정 후 Next



root 계정의 비밀번호 설정을 한 후 Next



윈도우상에서 서버스명으로 MySQL57(변경가능) Next



별도의 문서 저장소를 사용하지않을것이기에 체크하지않고 Next



설정에 관한 내용을 실행을 한 후 서버관련 설정을 완료.



남은 두가지 사항에 대해서는 거의 Skip이라고 보면됨. Next



Finish~



Next~



서버연결이 정상적으로 되는지 root 계정에 대한 접속을 확인 후 Next



최종적으로 Execute



Next~



설치완료를 알리는 Finish




위와 같은 Workbench 창이 뜬다면 정상적으로 설치가 완료 된 상태.


이제 본격적으로 MySQL을 사용하여 개발을 진행해 봅시다!



반응형
블로그 이미지

Mr.비타민

,