Print
카테고리: [ MariaDB ]
조회수: 51560

1. 개요

Java에서 MySQL(혹은 MariaDB)에 연결하여 개발해야 하는 경우는 빈번하게 발생한다. 그런데 무언가 잘 안될때 무엇이 문제인지 확인하느라 많은 시간을 허비하게 된다. 오늘은 기본적인 사항을 점검하고 테스트하는 방법을 공유하고자 한다.

 

2. MySQL 측면

 

3. 자바 측면

 

4. 연결 테스트

이제부터는 MySQL에 연결하여 테스트를 해보는 과정을 살펴본다.

- mysql>에서 다음과 같은 테이블을 만든다.

mysql> create table idol ( groupname varchar(50), membername varchar(50) );
Query OK, 0 rows affected (0.01 sec)

- 위에서 만든 idol 테이블에 레코드를 추가한다.

mysql> insert into idol values ('ses', 'vada');
Query OK, 1 row affected (0.00 sec)
mysql> insert into idol values ('sistar', 'dasom');
Query OK, 1 row affected (0.00 sec)

- 이제 아래 Java 코드로 연결을 해본다.

import java.sql.*;

public class MySQLConn {

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://127.0.0.1:3306/test";

    static final String USERNAME = "testuser";
    static final String PASSWORD = "testuser";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USERNAME,PASSWORD);
            System.out.println("\n- MySQL Connection");
            stmt = conn.createStatement();

            String sql;
            sql = "SELECT groupname, membername FROM idol";
            ResultSet rs = stmt.executeQuery(sql);

            while(rs.next()){
                String groupName = rs.getString("groupName");
                String memberName = rs.getString("memberName");

                System.out.print("\n** Group : " + groupName);
                System.out.print("\n    -> Member: " + memberName);
            }
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se1){
            se1.printStackTrace();
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            try{
                if(stmt!=null)
                    stmt.close();
            }catch(SQLException se2){
            }
            try{
                if(conn!=null)
                    conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("\n\n- MySQL Connection Close");
    }
}

- 결과

- MySQL Connectiom

** Group : ses
    -> Member: vada
** Group : sistar
    -> Member: dasom

- MySQL Connection Close

 

5. JNDI 방식으로 DB 연결

위 예제를 다음과 같이 수정한다.

javax.sql.DataSource
javax.naming.InitialContext
javax.naming.Context
DataSource dataSource;
Context context = new InitialContext();
dataSource = (DataSource)context.lookup("????");
conn = dataSource.getConnection();