MariaDB

MySQL과 Java를 연동하여 간단히 테스트 하는 방법 (MySQLConn)

열린기술자·2015년 2월 1일·조회 52,624

1. 개요

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

2. MySQL 측면

  • mysql -u 유저명 -p 를 입력하여 패스워드를 넣고 정상적으로 접속되는지 확인하자.
  • 많은 경우 유저 패스워드가 잘못된 경우가 많다. 만일 패스워드가 잘못되었다면 update user set password = PASSWORD('yyyy') where user='xxxx';와 같이 xxxx 유저의 패스워드를 yyyy 로 맞춰주고 다시 테스트한다.
  • flush privileges를 꼭 해주는 것도 잊지 말자.
  • database, table 등이 정상적인지 확인하자.

3. 자바 측면

  • JDBC Driver가 자바 애플리케이션 혹은 애플리케이션 서버의 CLASSPATH에 잘 잡혀있는지 확인하자. (클래스 로딩 : /index.php/java/473-2016-05-31-15-48-27)
  • 이클립스라면 build path 에서 확인한다.
  • MySQL 서버의 IP, Port를 확인하자.

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 연결

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

  • import 추가
javax.sql.DataSource
javax.naming.InitialContext
javax.naming.Context
  • 소스 수정
DataSource dataSource;
Context context = new InitialContext();
dataSource = (DataSource)context.lookup("????");
conn = dataSource.getConnection();

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.