728x90
반응형
정말 간단한 문제였는데 원인을 한번도 경험하지 못해서 시간이 많이 걸렸던 점이 좀 빡친다.
아래의 코드를 통해서 DB의 데이터에 접속한 후 리스트를 화면에 출력하는 내용이였는데 자꾸 Connection이 null이라고 출력됬다.
아무리봐도 null이 될만한 껀덕지가 없었는데, 알고보니 그 이유는 JAR 파일이 안들어가서 이클립스가 DB랑 연동을 못했던거 ㅎㅎ
꼭 JAR파일 넣고 시작하자
WEB-INF > lib
ㅅㅂ
package com.DAO;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.VO.memberVO;
public class memberDAO {
private Connection conn;
private Statement stmt;
private ResultSet rs;
private Connection getConn() {
System.out.println("Connecting to database...");
String url = "jdbc:mysql://localhost:3307/mydb?characterEncoding=UTF-8&serverTimezone=UTC&SSL=false";
Connection conn;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String ID = "root";
String PW = "tjoeun";
conn = DriverManager.getConnection(url, ID, PW);
return conn;
// Connection을 return 받아야 statement를 사용할 수 있음
}
catch (Exception e) {
System.err.println("DB 접속 실패");
System.out.println(e.getMessage());
}
return null;
}
private void closeAll() {
try {
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(conn!=null) {
conn.close();
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
public List<memberVO> getList() {
try {
this.conn = getConn();
this.stmt = conn.createStatement();
String sql = "SELECT * FROM dbtable";
this.rs = stmt.executeQuery(sql);
List<memberVO> list = new ArrayList<memberVO>();
while(rs.next()){
int num = rs.getInt("NUM");
String name = rs.getString("ID");
Date date = rs.getDate("HIREDATE");
int deptno = rs.getInt("DEPTNO");
int sal = rs.getInt("sal");
String division = rs.getString("DIVISION");
memberVO mem = new memberVO();
mem.setNum(num);
mem.setName(name);
mem.setDate(date);
mem.setDeptno(deptno);
mem.setSal(sal);
mem.setDivision(division);
list.add(mem);
}
closeAll();
return list;
} catch ( SQLException e) {
e.printStackTrace();
}
return null;
}
}
728x90
반응형