자바에서 MySql 데이터베이스 사용하기
- MySql 설치
- 오토셋 9.0으로 Apache, PHP, MySql을 통합설치
- URL : http://autoset.net
- PC의 Windows 버전에 맞는 파일 다운로드
- 버전 10 다운로드(32bit or 64bit)
- 버전 9 다운로드 (32bit or 64bit)
- 다운받은 파일 AutoSet910_x??.exe를 실행시켜 설치
- 관리자 ID : root , PW : autoset
- 이 홈페이지에서 다운 : 32bit 64bit
- phpMyAdmin에서 : http://localhost/phpmyadmin
- 데이터베이스 만들기
- 데이터베이스명 : dbjava
- 데이터정렬방식 : utf8_general_ci 대신 utf8mb4_general_ci 선택
- dbjava 데이터베이스에 tfaculty 테이블 만들기 I
- 필드를 모두 만들었으면 [저장] 버튼을 누른다.
- dbjava 데이터베이스에 tfaculty 테이블 만들기 II
- 다음 파일을 다운로드 한다.
- 파일의 파랑 사각형 안의 Sql을 복사한다.
- phpMyAdmin의 SQL에 붙여넣기 후 [실행] 버튼 클릭한다.
- 데이터베이스 만들기
- JDBC 드라이버 설치
- jar 파일 다운로드
- 8.0.16버전(2019년 6월 27일 현재)
- 8.0.11버전(2018년 5월 06일 현재)
- URL : http://dev.mysql.com/downloads/connector/j/ 에 접속하여 파일 다운로드
- Operating System : Platform Independent
- 파일 : mysql-connector-java-8.0.11.zip
- 다운로드한 파일을 압축을 풀어 mysql-connector-java-8.0.11.jar 파일을 복사
- 이 홈페이지에서 다운 : 다운로드
- URL : http://dev.mysql.com/downloads/connector/j/ 에 접속하여 파일 다운로드
- 5.1.41버전(2017년 4월 12일 현재)
- 이 홈페이지에서 다운 : 다운로드
- mysql-connector-java-XXX.jar 파일을 JDK가 설치된 폴더의 jre\lib\ext 폴더에 복사한다.
두 군데 모두 복사해 놓는 것 추천 : 둘 중 하나는 사용할 수 있으니
(예 : \Java\jdk1.8.XXX\jre\lib\ext 또는 \Java\jre1.8.XXX\lib\ext) - 이클립스에서 프로젝터의 JRE System Library를 마우스 오른쪽 버튼으로 누른 후 Refresh를 한다.
- 자바 프로젝트의 JRE System Library를 열어보면 mysql-connector-java-XXX.jar 가 존재하면 설치는 성공
- jar 파일 다운로드
- 프로그램 소스
- MyConst.java : 패키지의 모든 클래스에서 사용할 상수 선언
12345678910111213package kr.ac.jj;public class MyConst {//public static final String DRIVER = "org.gjt.mm.mysql.Driver"; //5.0.41버전//public static final String URL = "jdbc:mysql://localhost:3306/dbjava"; //5.0.41버전public static final String DRIVER = "com.mysql.cj.jdbc.Driver"; //8.0.11버전public static final String URL = "jdbc:mysql://localhost:3306/dbjava?serverTimezone=UTC";//8.0.11버전public static final String USER = "root"; // DB IDpublic static final String PASS = "autoset"; // DB 암호}- 8.0.11 버전과 5.1.41 버전의 DRIVER 클래스 이름과 URL 형태가 다름
- jdbc:mysql://localhost:3306/dbjava?serverTimezone=UTC : 내가 만든 DB이름으로 변경해야 함, 현재 이 글에서는 dbjava라는 DB를 만들었으니 dbjava라 사용함
- FacultyDTO.java :
123456789101112131415161718192021public class FacultyDTO {public String id;public String passwd;public String name;public String email;public String sex;public String tel;public String hp;public String post;public String addr1;public String addr2;public String memo;public FacultyDTO(){}public FacultyDTO(String id, String passwd, String name){this.id = id;this.passwd = passwd;this.name = name;}} - FacultyDAO.java :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899public class FacultyDAO {private String tableName = "tfaculty";public FacultyDAO() {}/** DB연결 메소드 */public Connection getConn() {Connection con = null;try {Class.forName(MyConst.DRIVER); // 1. 드라이버 로딩con = DriverManager.getConnection(MyConst.URL, MyConst.USER, MyConst.PASS); // 2. 드라이버 연결} catch (Exception e) {e.printStackTrace();}return con;}/** 회원 등록 */public boolean insertMember(FacultyDTO dto) {boolean ok = false;Connection con = null; // 연결PreparedStatement ps = null; // 명령try {con = getConn();String sql = "insert into " + tableName + "("+ "student, id, passwd, name"+ ") " + "values('홍길동', ?,?,?);";ps = con.prepareStatement(sql);ps.setString(1, dto.getId());ps.setString(2, dto.getPasswd());ps.setString(3, dto.getName());int r = ps.executeUpdate(); // 실행 -> 저장con.close();if (r > 0) {System.out.println("가입 성공");ok = true;} else {System.out.println("가입 실패");}} catch (Exception e) {e.printStackTrace();}return ok;}// insertMmeber/** 한사람의 정보를 얻는 메소드 */public FacultyDTO getFacultyDTO(String id) {FacultyDTO dto = null;Connection con = null; // 연결PreparedStatement ps = null; // 명령ResultSet rs = null; // 결과try {con = getConn();String sql = "select * from " + tableName + " where id=? and student='홍길동';";ps = con.prepareStatement(sql);ps.setString(1, id);rs = ps.executeQuery();if (rs.next()) {dto = new FacultyDTO();dto.setId(rs.getString("id"));dto.setPasswd(rs.getString("passwd"));dto.setName(rs.getString("name"));}con.close();} catch (Exception e) {e.printStackTrace();}return dto;}/** 내가 입력한 사람들의 정보를 얻는 메소드 */public ArrayList<FacultyDTO> getFacultyList() {ArrayList<FacultyDTO> arList = new ArrayList<FacultyDTO>();Connection con = null; // 연결PreparedStatement ps = null; // 명령ResultSet rs = null; // 결과try {con = getConn();String sql = "select * from " + tableName + " where student='홍길동';";ps = con.prepareStatement(sql);rs = ps.executeQuery();while (rs.next()) {FacultyDTO dto = new FacultyDTO();dto.setId(rs.getString("id"));dto.setPasswd(rs.getString("passwd"));dto.setName(rs.getString("name"));arList.add(dto);}con.close();} catch (Exception e) {e.printStackTrace();}return arList;}} - FacultyUI.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394public class FacultyUI extends JFrame implements ActionListener {JButton[] btn;JPanel p;JTextField txtId, txtName, txtEname;JPasswordField txtPasswd;public FacultyUI() {this.setTitle("교수정보");this.setLayout(null);this.setResizable(false);setSize(800, 600);setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); // System.exit(0) //프로그램종료// setDefaultCloseOperation(DISPOSE_ON_CLOSE); //dispose(); //현재창만 닫는다.int posX1 = 10, posX2 = 90, posX3 = 230, posX4 = 310, width1 = 80, posY = 10, width2 = 120, height = 20;// 아이디JLabel lblId = new JLabel("사번 : ");lblId.setBounds(10, 10, 100, 25);this.add(lblId);txtId = new JTextField(20);txtId.setBounds(120, 10, 100, 25);this.add(txtId);// 비밀번호JLabel lblPwd = new JLabel("비밀번호 : ");lblPwd.setBounds(10, 40, 100, 25);this.add(lblPwd);txtPasswd = new JPasswordField(20);txtPasswd.setBounds(120, 40, 100, 25);this.add(txtPasswd);// 이름JLabel lblName = new JLabel("이름 :");lblName.setBounds(10, 70, 100, 25);this.add(lblName);txtName = new JTextField(20);txtName.setBounds(120, 70, 100, 25);this.add(txtName);JButton btnInsert = new JButton("삽입");btnInsert.setBounds(10, 130, 100, 25);btnInsert.addActionListener(this); // 회원가입버튼 리스너 등록this.add(btnInsert);JButton btnSearch = new JButton("검색");btnSearch.setBounds(120, 130, 100, 25);btnSearch.addActionListener(this); // 검색버튼 리스너 등록this.add(btnSearch);JButton btnSearchAll = new JButton("전체목록");btnSearchAll.setBounds(230, 130, 100, 25);btnSearchAll.addActionListener(this); // 검색버튼 리스너 등록this.add(btnSearchAll);setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub// 화면에서 사용자가 입력한 내용을 얻는다.FacultyDTO dto = null;FacultyDAO dao = new FacultyDAO();switch (e.getActionCommand()) {case "삽입":dto = new FacultyDTO();dto.setId(this.txtId.getText());dto.setPasswd(this.txtPasswd.getPassword().toString());dto.setName(this.txtName.getText());dao.insertMember(dto);break;case "검색":dto = dao.getFacultyDTO(this.txtId.getText());if(dto != null)System.out.println(dto.id + " " + dto.passwd + " " + dto.name);break;case "전체목록":ArrayList<FacultyDTO> arList = dao.getFacultyList();for(int i=0; i<arList.size(); i++) {dto = arList.get(i);System.out.println(dto.id + " " + dto.passwd + " " + dto.name);}break;}}} - MyMain.java
123456789package kr.ac.jj;public class MyMain {public static void main(String[] args) {// TODO Auto-generated method stubnew FacultyUI();}} - 교수참조: 구글드라이브에 비공개로 /2018년 1학기/자바/JeonjuUniv.zip 파일 올려놓았음
- 자바에서 SQLite 데이터베이스 사용하기
- MyConst.java : 패키지의 모든 클래스에서 사용할 상수 선언