mySQL 서버 연동 문제 해결

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
반응형