JDBC
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;
}
๊ทธ ๋ค์ ๋๋น๋ฅผ ๋ซ์์ค ๋ค์ ๋ฉ์๋๋ ์ข ๋ฃ๋๋ค.