DB - mySQL을 JAVA와 연동하기

728x90
반응형

 

 

오늘의 DB를 연동시킬 수 있게 도와주는 새로운 클래스는 Connection, Statement ,ResultSet!

 

DB를 연동시키기 위해서 하나의 파일을 다운받아야 하는데, 이 JAR파일이 Connection의 인터페이스 메서드를 오버라이딩 해줌으로써 SQL와 연동시킬 수 있다.

 

Connection은 인터페이스로 개발자가 서버 연동을 위해 메서드를 구현할 필요 없이 서버 배포자에게 메서드 구현을 전가해 개발자의 편의를 높였다.

 

아래의 링크에 들어가서 JAR파일을 다운받고, 프로젝트의 build path에 들어가서 classpath에 넣어주자.

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.28

 

 

솔직히 DB 연동하는 법을 먼저 배울 때 아래 코드를 볼 때 좀 많이 막막했다.

 

아래 코드를 간략하게 설명한 주석을 보면서 일단 따라치고 몸으로 체득하는 편이 좋다.

다 완성했으면 main 클래스에서 실행하여 DB와 연동이 되는지 확인 후 프로젝트에 적용할 것

	      Connection conn = null;
	      Statement stmt = null;
	      
//	      개발자가 데이터 연결을 위한 로직을 신경쓰지 않고 데이터베이스 벤더에게 연결 로직의
//	      구현을 맡겨서 접근성을 용이하게 함
//	      데이터 연결을 위한 인터페이스의 구현을 위해 파일을 포함시켜 주면 그 객체를
//	      Class.forName을 통해 구현할 수 있다.
	      
//	      show globlavariables like 'port'; = mySQL 포트번호 확인하는 법

	      try{
	         System.out.println("Connecting to database...");
	         
//			 DB 연결하는 구문	         
	         String url = "jdbc:mysql://localhost:3307/mydb?characterEncoding=UTF-8&serverTimezone=UTC&SSL=false";
//	         위의 경로를 보면 /뒤에 원하는 데이터베이스를 바꿔줘야 그 데이터로 접속이 됨
//			 경로 복붙하는 편이 정신건강에 좋을듯?			 
	         Class.forName("com.mysql.cj.jdbc.Driver");
//	         받은 파일의 인터페이스를 구현하기 위해 jar 파일에서 가져오는 구문
	         conn = DriverManager.getConnection(url, "root", "tjoeun");
	         
	         
	         System.out.println("Creating statement...");
	         stmt = conn.createStatement();
	         
	         String sql = "SELECT * FROM dbtable";
	         ResultSet rs = stmt.executeQuery(sql);
//	         sql을 사용하기 위한 가상의 객체 rs를 가져와서
	         
	         while(rs.next()){ // => 데이터 행이 여러개면 아래의 객체를 전부 행대로 출력함
//				만약 값이 있다면 다음을 출력	        	 
	            //Retrieve by column name
	        	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");
//	            추출한 데이터를 String 타입을 받는다는 뜻
//	            int면 getInt, getFloat등 지정해서 출력
	   
	            //Display values
	            System.out.printf("%d %s %s %d %d %s\n",
	            		num, name, date, deptno, sal, division);
	         }
	   
	         rs.close();
	         stmt.close();
	         conn.close();
	      }catch(SQLException se){
	         se.printStackTrace();
	      }catch(Exception e){
	         e.printStackTrace();
	      }finally{
	         try{
	            if(stmt!=null)
	               stmt.close();
	         }catch(SQLException se2){
	            try{
	               if(conn!=null)
	                  conn.close();
//	               	  오류가 났더라도 일단 데이터베이스를 닫아야 다른사람이 접속할 수 있으므로
//	               	  반드시 finally 구문으로 끊어줘야함
//	               	  동시접속 제한!!!!!
	            }catch(SQLException se){
	               se.printStackTrace();
	            }
	         }//end of catch
	         System.out.println("\nGoodbye!");
	      }//end finally
	   }//end of main()

 

 

 

728x90
반응형