본문 바로가기
Study/프로그래밍 공부

자바와 mysql 연동 기초실습

by prlkt5200 2024. 9. 27.
반응형

이클립스에서 한번 해봤습니다.

미리 jdbc 드라이버를 설치해주고 이런 데이터베이스 연동을 실습해줘야 됩니다.

아래의 예제에 맞는 데이터베이스와 테이블이 있어야 하므로

흐름만 파악하시는데 사용하시면 될듯합니다.

 

package dbmanagement;

public class App {

	public static void main(String[] args) {
		DBManager manager = new DBManager();
		manager.initDBConnect();
		User[] userList = manager.allFecth();
		
		for (int i = 0; i< userList.length; i++) {
			System.out.println(userList[i].getUserId());
			System.out.println(userList[i].getUserName());
			System.out.println(userList[i].getHeight());
		}
	}

}

 

 

package dbmanagement;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBManager {

	// 이것도 하는 방식을 외우자
	private String driver = "com.mysql.cj.jdbc.Driver";
	private String url = "jdbc:mysql://127.0.0.1:3306/cookdb?serverTimeZone=UTC";
	private String id = "root";
	private String pw = "1234";

	// 이 변수의 객체를 사용하기 위해서는 예외처리를 반드시 하게 jdbc가 정했다.
	private Connection conn = null;
	private Statement stmt = null;

	public DBManager() {
	}

	// db 연결의 초기작업을 담당한다.
	public void initDBConnect() {

		try {
			// 클래스 이름 가져오고
			Class.forName(driver);
			// 연결객체를 만들어준다.
			this.conn = DriverManager.getConnection(this.url, this.id, this.pw);
			// 연결객체를 통해서 명령객체를 만든다
			this.stmt = conn.createStatement();

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public User[] allFecth() {
		int recount = this.recordCount();
		User[] userList = new User[recount];
		//userList의 인덱스를 조정할 변수이다.
		int userCount = 0;
		// 이 문자열을 쿼리로 날려준다.
		String sql = "select * from usertbl";

		try {
			// stmt로 받아오는 결과 객체(테이블)를 rs에 저장해주고 그런 클래스가 ResultSet
			ResultSet rs = stmt.executeQuery(sql);

			// 테이블의 레코드 하나를 가져와 저장하고
			while (rs.next()) {

				// 가져온 레코드에서 get---으로 값을 하나씩 가져온다
				String id = rs.getString("userid");
				String username = rs.getString("username");
				String birthYear = rs.getString("birthyear");
				String addr = rs.getString("addr");
				String mobile1 = rs.getString("mobile1");
				String mobile2 = rs.getString("mobile2");
				int height = rs.getInt("height");
				Date mdate = rs.getDate("mdate");
				userList[userCount++] = new User(id, username,birthYear, addr, mobile1, mobile2, height, mdate);

			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return userList;
	}

	public int recordCount() {
		String sql = "select count(*) as cnt from usertbl";
		int recount = 0;
		try {
			ResultSet rs = stmt.executeQuery(sql);
			if (rs.next()) {
				recount = rs.getInt("cnt");
			}
			rs.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return recount;
	}

}

 

 

package dbmanagement;

import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;

public class User {
	private String userId;
	private String userName;
	private String birthYear;
	private String addr;
	private String mobile1;
	private String mobile2;
	private int height;
	private Date mdate;

	public User(String puserid, String puserName, String pbirthYear, String paddr, String pmobile1, String pmobile2,
			int pheight, Date pmdate) {

		this.userId = puserid;
		this.userName = puserName;
		this.birthYear = pbirthYear;
		this.addr = paddr;
		this.mobile1 = pmobile1;
		this.mobile1 = pmobile2;
		this.height = pheight;
		this.mdate = pmdate;

	}

	public String getUserName() {
		return userName;
	}

	public String getBirthYear() {
		return birthYear;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getMobile1() {
		return mobile1;
	}

	public void setMobile1(String mobile1) {
		this.mobile1 = mobile1;
	}

	public String getMobile2() {
		return mobile2;
	}

	public void setMobile2(String mobile2) {
		this.mobile2 = mobile2;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public Date getMdate() {
		return mdate;
	}

	public void setMdate(Date mdate) {
		this.mdate = mdate;
	}

	public String getUserId() {
		return userId;
	}

}
반응형