hyunjun's developing ๐Ÿฃ 2024. 9. 5. 16:24

JDBC๋Š” ์ž๋ฐ”์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๋™์‹œ์ผœ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

 

์ด ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ์ด๋Ÿฌํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊น”์•„์„œ ํ”„๋กœ์ ํŠธ์˜ lib ํด๋”์— ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

JDBC๋Š” ์œ„์™€ ๊ฐ™์ด 6๋‹จ๊ณ„์˜ ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰์„ ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

public UserDao() {

// TODO Auto-generated constructor stub

//๊ฐ•์ œ ๊ฐ์ฒด ์ƒ์„ฑ --> org.mariadb.jdbc.driver ์–˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ•์ œ๋กœ ์ƒ์„ฑํ•˜๊ฒ ๋‹ค (๊ฐ•์ œ ๊ฐ์ฒด ์ƒ์„ฑ์€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋ฌด์กฐ๊ฑด ํ•ด์ฃผ์–ด์•ผ ํ•จ)

try {

Class.forName("org.mariadb.jdbc.Driver");

System.out.println("1๋‹จ๊ณ„ : ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ์„ฑ๊ณต");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("1๋‹จ๊ณ„ ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ์‹คํŒจ");

}

 

 

์˜ˆ์‹œ๋กœ ์ด ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์ž. 

 

DAO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•ด์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

UserDao๋ผ๋Š” ์ƒ์„ฑ์ž ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ  org.mariadb.jdbc.Driver

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ 1๋‹จ๊ณ„์—์„œ ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ธ๋ฐ. ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ dao๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ์„ ์˜๋„ํ•œ ์ฝ”๋“œ๋‹ค. 

 

//ํšŒ์›๋ชฉ๋ก ์กฐํšŒ๊ธฐ๋Šฅ : [dto,dtp,dto...] dto์—๋Š” userid,name,birthYear๋“ฑ์ด ๋‹ด๊ฒจ์žˆ์Œ

public List<UserDto> getAllUser(){

List<UserDto> list = new ArrayList<>();

 

 

//2๋‹จ๊ณ„ : ๋””๋น„์—ฐ๊ฒฐ

String url = "jdbc:mariadb://localhost:3306/hkeduweb";

String user = "root";

String password = "root";

Connection conn = null ; //๋””๋น„ ์—ฐ๊ฒฐํ• ๋•Œ ์‚ฌ์šฉํ•  ๊ฐ์ฒด

PreparedStatement psmt = null; //์ฟผ๋ฆฌ ์ค€๋น„ ๋ฐ ์‹คํ–‰์„ ์œ„ํ•œ ๊ฐ์ฒด

ResultSet rs = null; //์ฟผ๋ฆฌ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ๊ฐ์ฒด

 

// ์‹คํ–‰ ์ฟผ๋ฆฌ ์ž‘์„ฑ

String sql = "SELECT userID ,"

+ " NAME ,"

+ " birthYear ,"

+ " addr , "

+ " mobile1 ,"

+ " mobile2 ,"

+ " height ,"

+ " mDate "

+ "FROM usertbl";

//java.sql, java.io, java.net : ๋ฌด์กฐ๊ฑด ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

try {

conn=DriverManager.getConnection(url, user, password);

System.out.println("2๋‹จ๊ฒŒ:๋””๋น„์—ฐ๊ฒฐ์„ฑ๊ณต");

psmt = conn.prepareStatement(sql);// ์œ„์— sql ๋””๋น„์— ์ „์†กํ›„ ๊ทธ ์ €์žฅ๋œ ์ƒํƒœ๋ฅผ psmt์— ์ €์žฅ

System.out.println("3๋‹จ๊ณ„: ์ฟผ๋ฆฌ์ค€๋น„์„ฑ๊ณต");

//์ฟผ๋ฆฌ์‹คํ–‰

rs= psmt.executeQuery();

psmt.executeQuery() ;

System.out.println("4๋‹จ๊ฒŒ: ์ฟผ๋ฆฌ์‹คํ–‰์„ฑ๊ณต");

//์‹คํ–‰๊ฒฐ๊ณผ ๋ฐ›๊ธฐ : ๋””๋น„ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ™˜ํ•ด์„œ ์ €์žฅ

while(rs.next()) { //next๋Š” rs์— ์ฟผ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์„œ ํŠธ๋ฃจ/ํŽ„์Šค ๋ฐ˜ํ™˜

UserDto dto = new UserDto();

dto.setUserId(rs.getString(1));

dto.setName(rs.getString(2));

dto.setBirthYear(rs.getInt(3));

dto.setAddr(rs.getString(4));

dto.setMobile1(rs.getString(5));

dto.setMobile2(rs.getString(6));

dto.setHeight(rs.getInt(7));

dto.setmDate(rs.getDate(8));

list.add(dto);

}

System.out.println("5๋‹จ๊ณ„ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ ์„ฑ๊ณต");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("JDBC์‹คํŒจ" + getClass());

}finally {

try {

if(rs!=null) {

rs.close();

}

if(psmt != null) {

psmt.close();

}

if(conn != null) {

conn.close();

}

System.out.println("6๋‹จ๊ผ :๋””๋น„ ๋‹ซ๊ธฐ ์„ฑ๊ณต ");

 

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("6๋‹จ๊ณ„ ๋””๋น„ ๋‹ซ๊ธฐ ์‹คํŒจ");

}

 

}

return list;

 

 

 

}

 

์ด ๋ถ€๋ถ„์€ main method์—์„œ getAllUser()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์ด๋‹ค. UserDto๋Š” ํšŒ์› ์ •๋ณด๋ฅผ ํ•œ ํ–‰์”ฉ ๋‹ด๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ๋‹ค. 

 

public class UserDto {

private String userId;

private String name;

private int birthYear;

private String addr;

private String mobile1;

private String mobile2;

 

private int height;

private Date mDate;

 

// ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ

public UserDto(String userId, String name, int birthYear, String addr, String mobile1, String mobile2, int height,

Date mDate) {

super();

this.userId = userId;

this.name = name;

this.birthYear = birthYear;

this.addr = addr;

this.mobile1 = mobile1;

this.mobile2 = mobile2;

this.height = height;

this.mDate = mDate;

}

์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

๋‹ค์‹œ getAllUser๋กœ ๋Œ์•„์™€์„œ List<UserDto> list = new ArrayList<>();

 

์ด ๋ถ€๋ถ„์„ ๋ณด๋ฉด UserDto ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. 

 

//2๋‹จ๊ณ„ : ๋””๋น„์—ฐ๊ฒฐ

String url = "jdbc:mariadb://localhost:3306/hkeduweb";

String user = "root";

String password = "1234";

Connection conn = null ; //๋””๋น„ ์—ฐ๊ฒฐํ• ๋•Œ ์‚ฌ์šฉํ•  ๊ฐ์ฒด

PreparedStatement psmt = null; //์ฟผ๋ฆฌ ์ค€๋น„ ๋ฐ ์‹คํ–‰์„ ์œ„ํ•œ ๊ฐ์ฒด

ResultSet rs = null; //์ฟผ๋ฆฌ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ๊ฐ์ฒด

 

 

์ด ๋ถ€๋ถ„์€ ๋””๋น„๋ฅผ ์—ฐ๊ฒฐํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค. 3306์€ ํฌํŠธ๋ฒˆํ˜ธ๋กœ heidiSQL์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋’ค์— hkeduweb์€ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์ด๋‹ค. 

 

 

 

 

์œ„์— ์‚ฌ์ง„์„ ๋ณด๋ฉด ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ ์ˆœ์„œ์— ๋งž๊ฒŒ ์ดํด๋ฆฝ์Šค์—์„œ  sql ์ž‘์„ฑ ์ˆœ์„œ๋ฅผ ๋งž์ถฐ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

try {

conn=DriverManager.getConnection(url, user, password);

System.out.println("2๋‹จ๊ฒŒ:๋””๋น„์—ฐ๊ฒฐ์„ฑ๊ณต");

psmt = conn.prepareStatement(sql);// ์œ„์— sql ๋””๋น„์— ์ „์†กํ›„ ๊ทธ ์ €์žฅ๋œ ์ƒํƒœ๋ฅผ psmt์— ์ €์žฅ

System.out.println("3๋‹จ๊ณ„: ์ฟผ๋ฆฌ์ค€๋น„์„ฑ๊ณต");

//์ฟผ๋ฆฌ์‹คํ–‰

rs= psmt.executeQuery();

psmt.executeQuery() ;

System.out.println("4๋‹จ๊ฒŒ: ์ฟผ๋ฆฌ์‹คํ–‰์„ฑ๊ณต");

//์‹คํ–‰๊ฒฐ๊ณผ ๋ฐ›๊ธฐ : ๋””๋น„ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ™˜ํ•ด์„œ ์ €์žฅ

while(rs.next()) { //next๋Š” rs์— ์ฟผ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์„œ ํŠธ๋ฃจ/ํŽ„์Šค ๋ฐ˜ํ™˜

UserDto dto = new UserDto();

dto.setUserId(rs.getString(1));

dto.setName(rs.getString(2));

dto.setBirthYear(rs.getInt(3));

dto.setAddr(rs.getString(4));

dto.setMobile1(rs.getString(5));

dto.setMobile2(rs.getString(6));

dto.setHeight(rs.getInt(7));

dto.setmDate(rs.getDate(8));

list.add(dto);

}

๊ทธ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐ์„ ํ•˜๊ณ   ๊ทธ ์ •๋ณด๋ฅผ conn์— ์ €์žฅ์„ ํ•ด๋‘” ๋‹ค์Œ ๊ทธ๊ฒƒ์œผ๋กœ sql๋ฌธ์„ ์ค€๋น„์‹œ์ผœ ์ฟผ๋ฆฌ๋ฅผ ์ค€๋น„ํ•œ๋‹ค.  ๊ทธ ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์ค€ ๋‹ค์Œ dto๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด dto์—์„œ ๋งŒ๋“ค์–ด์ค€ ๋ฉ”์„œ๋“œ์™€ ์ž๋ฐ”์—์„œ ์ง€์›ํ•ด์ฃผ๋Š” ์ฝ”๋“ค๋ฅด ํ†ตํ•ด  list์— ๋”ํ•ด์ค€๋‹ค. 

 

 

System.out.println("5๋‹จ๊ณ„ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ ์„ฑ๊ณต");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("JDBC์‹คํŒจ" + getClass());

}finally {

try {

if(rs!=null) {

rs.close();

}

if(psmt != null) {

psmt.close();

}

if(conn != null) {

conn.close();

}

System.out.println("6๋‹จ๊ผ :๋””๋น„ ๋‹ซ๊ธฐ ์„ฑ๊ณต ");

 

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("6๋‹จ๊ณ„ ๋””๋น„ ๋‹ซ๊ธฐ ์‹คํŒจ");

}

 

}

return list;

 

 

 

}

๊ทธ ๋‹ค์Œ ๋””๋น„๋ฅผ ๋‹ซ์•„์ค€ ๋‹ค์Œ ๋ฉ”์„œ๋“œ๋Š” ์ข…๋ฃŒ๋œ๋‹ค.