Haekt‘s log

[JAVA] DB 연결 코딩하기 본문

언어/JAVA

[JAVA] DB 연결 코딩하기

Haekt 2022. 11. 30. 17:25

사전 준비사항

https://haekt-log.tistory.com/60

 

[JAVA] DB 연결을 위한 lib참조 Path 설정

아래 경로에서 MySQL을 다운받는 방법을 설명했다. https://haekt-log.tistory.com/59 [MySQL] MySQL Community server 설치 급한사람들을 위한 인스톨러 다운로드 경로.. https://dev.mysql.com/downloads/mysql/ MySQL :: Download M

haekt-log.tistory.com


- JDBC 연결 과정

  1. import java.sql.*;

  2. Driver 를 load

  3. Mysql 연결을 위한 Connection 객체 생성.

  4. DB와의 질의응답을 위한 Statement 객체 생성

  5. 질의결과를 저장을 위한 ResultSet 객체 생성

  6. 코드 실행 후, 앞서 생성했던 객체들을 Close()

 

* 여기서 질의응답은 Select 같은 쿼리문으로 DB와 결과를 주고받는 것을 말함.

* 질의결과의 예시로는 select 문으로 가져온 레코드 값이 있다.


// sql 회사마다 클래스 이름이 다르고, 작성 방법도 다를 수 있다..
// 아래 코드는 Mysql 의 코드이다.

1. import java.sql.*

DB 클래스들의 위치는  import java.sql 에 위치해 있다. 

import java.sql.*;

 

이제 DB 를 다루는 클래스들을 사용할수 있게 되었다. 

 

2. Driver 를 load

DB 에 연결하기 위해 DB Driver 를 불러오고 DBServer 의 정보를 작성해야한다.

// 1.드라이버 불러오기
// mysql은 "com.mysql.jdbc.Driver"
Class.forName("com.mysql.jdbc.Driver");

 

3. DB 연결을 위한 Connection 객체 생성

DB연결을 하는 부분이다.

// 2.DB연결하기

// Mysql 연결을 위한 Connection 객체로, 연결정보를 담는다.
Connection conn = null;

// DB와 연결하기 위해 DBurl, id, pw 와 같은 DB의 연결정보를 입력해야한다.
// url 의 작성방법은 다음과 같다. "jdbc:mysql://localhost/사용할db이름"
String DBurl = "jdbc:mysql://localhost:3306/test_db";

// 연결 결과를 Connection 객체에 담는다.
// @param  getConnection(url, userName, password);
// @return Connection
conn = DriverManager.getConnection(DBurl, root, 1234);

 

 4. DB와의 질의응답을 위한 Statement 객체 생성

DB 연결 후 Select 와 같은 질의문을 사용하기 위해서 Statement 객체를 생성한다.

// 3.질의응답을 위한 Statement 객체 생성
Statement stmt = null;

// 쿼리수행을 위해 Statement 객체를 생성한다.
stmt = con.createStatement();




// 예시  --------------------------------------------------------------
// sql 변수에 담긴 쿼리문 실행
stmt.executeQuery(sql);

// 예시 2
// insert문의 경우 인자값이 유동적인 경우가 있으므로 
// ? 를 대신 넣어서 나중에 값을 넣기도 함
String sql = "INSERT INTO pet VALUES (?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);


//예시 2의 sql문 데이터 binding
// setString(들어갈 위치, 들어갈 값 또는 변수 )
pstmt.setString(1, name);
pstmt.setString(2, owner);
pstmt.setString(3, species);
pstmt.setString(4, gender);
pstmt.setString(5, birth);
pstmt.setString(6, death);

 

5. 질의결과를 저장을 위한 ResultSet 객체 생성 

Statement 객체를 통해 DB에 질의한 결과를 저장하는 객체이다.

Select 의 경우, 결과를 저장해야하기 때문에 ResultSet 객체를 생성한다.

// 4.쿼리문 실행
// 레코드를 ResultSet 객체 생성.
ResultSet rs;

// 쿼리문 실행 후, 결과 레코드를 ResultSet 객체에 저장
rs=stmt.executeQuery(sql);

// 레코드의 컬럼은 0번째가 아닌 1번째부터 시작한다.
// 처음에는 0번째를 가리키고 있으므로, 1번째로 이동시켜줘야한다.
while(rs.next()){

	// DB에서 가져온 데이터의 자료형에 따라 getString, getInt 로 가져오면 된다.
	// rs.getString("컬럼 이름");
	String name = rs.getString("name");
    	int tel = rs.getInt("tel");
}

 

6. 코드 실행 후, 앞서 생성했던 객체들을 Close()

모든 과정을 거친 후, 앞서 생성했던 객체들을 Close 하여, DB와의 연결을 마무리한다.

// 5. 생성했던 객체 Close();
stmt.Close();
con.Close();

 


DB연결 코드 예시

import java.sql.*;

public class DB_file{
	
	   String dbDriver ="com.mysql.jdbc.Driver"; 
	   String dbUrl    = "jdbc:mysql://localhost:3306/order_db";
	   String dbId     = "root";
	   String dbPw     = "1234";
	   Connection con = null;
	   Statement stmt = null;
	   
       // DB 와 연결을 하는 코드가 적혀진 생성자.
	   DB_file(){
		   
		    try{
            
            	// db 드라이버를 불러옴
		        Class.forName( dbDriver );
                
                // 연결 결과를 Connection 객체에 담는다.
		       	con = DriverManager.getConnection( dbUrl, dbId, dbPw ); 
                
                             
             	// 질의응답을 위해 Statement 객체 생성.
                // show() 및 추후 추가될 함수를 위해 생성자에서 함.
		     	stmt = con.createStatement();
 
		       	System.out.print("mysql jdbc test: connect ok!!");
                
               // 연결 실패시 에러를 출력
		       }catch(Exception e){  
		    	   System.out.println(e);
		       }
		   
	   }
       
       	// DB의 테이블의 내용을 모두 출력하는 함수.
       	public Vector show() {  
        	
            // 레코드를 담을 벡터 변수
			Vector<String> v= new Vector<String>(); 
        
         try 
         {
         	 // 실행할 쿼리문
             String sql="select * from rent"; 
             
             //레코드를 담을 ResultSet 객체
             ResultSet rs=stmt.executeQuery(sql);
			
               while(rs.next())
               {
                    String ss="";
                    String s1=rs.getString("id");
                    String s2=rs.getString("menu");
                    String s3=rs.getString("price");
                    ss=s1+" "+s2+" "+s3;
                    v.add(ss);
               }
             System.out.println("get ok");
             
             // 코드 실행 후, 생성한 객체 Close
             stmt.close();
             con.close();
         }
         catch(Exception e)  // 실행을 try 하고, 예외 발생시, 오류 출력.
         {
                 e.printStackTrace();
         }
         
        // 레코드를 담은 벡터변수 리턴.
		return v; 
	   }
       
       public static void main(String args[]) {

		  new DB_file();

	   }
 }

 

 

* 참고 : https://victorydntmd.tistory.com/145

 

[Java] JDBC 사용하기 ( MySQL )

1. JDBC란? 자바에서 데이터베이스를 사용하기 위한 절차에 대한 규약입니다. DBMS에 따라 DB를 다루는 방식이 다르다면, 사용자는 알아야 할 것이 매우 많을 것입니다. 그래서 JDBC를 통해 추상화된

victorydntmd.tistory.com

 

Comments