jdbc から MySQL に接続する

jdbc を使って Java から MySQL に接続する時のメモ。

各種設定は以下のようにプロパティファイルに記述しているものとします。

driver=com.mysql.jdbc.Driver
host=jdbc:mysql://localhost:3306/test
user=username
password=password

MySQLjdbc 用ドライバは以下のアドレスからダウンロードできます。ダウンロードした jar ファイルをクラスパスに登録するのも忘れないようにして下さい。

http://dev.mysql.com/downloads/connector/j/

ソースはこんな形。

import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Properties;

public class DataProvider {
	private String driver;
	private String url;
	private String userName;
	private String password;
	
	public DataProvider(int id) {
		Properties prop         = new Properties();
		Connection con          = null;
		ResultSet rs            = null;
		String sql              = null;
		PreparedStatement pstmt = null;
		
		try {
			// DB関連の接続設定をプロパティからロード
			prop.load(new FileInputStream("properties/Connection.properties"));
			driver   = prop.getProperty("driver");
			url      = prop.getProperty("host");
			userName = prop.getProperty("user");
			password = prop.getProperty("password");
			
			// コネクションを確立
			Class.forName(this.driver);
			con = DriverManager.getConnection(url, userName, password);
			
			// データを取得
			sql = "SELECT * FROM sample_table WHERE id = ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, id);
			rs = pstmt.executeQuery();
			while(rs.next()) {
				// 何らかの処理
			}
			rs.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

途中で記述している

Class.forName(this.driver);

ここがポイントで、このコードで jdbc で利用可能なドライバに MySQL のドライバを登録しています。

なお、コネクション設定で誤ったアドレスを指定した場合にも No suitable driver と、まるでドライバの指定がおかしいようなエラーが出てしまうようです。私の場合、ポートの指定を忘れていたせいで引っかかってハマってしまいました。