JavaでDBアクセス


Javaから以前インストールしていたMySQLに接続してみる。


使用したバージョン

MySQL Server 5.0


1.MySQLJDBCドライバを使用可能にする


MySQLをインストールしたフォルダにあった"mysql-connector-java-5.0.4-bin.jar"を
Tomcate5.5\shared\libへコピー。


コピー元

C:\Program Files\MySQL\MySQL Tools for 5.0\java\lib

2.DBアクセスクラスを作成

package info.searchman;

import java.sql.*;

public class DatabaseAccess {
  private String driver;
  private String url;
  private String user;
  private String passwd;
  private Connection con;
  private Statement stmt;
  private ResultSet rs;

  /**
   * コンストラクタ
   */
  public DatabaseAccess() {
    driver = "org.gjt.mm.mysql.Driver";
    //接続情報の定義
    url = "jdbc:mysql:///lab?useUnicode=true&characterEncoding=SJIS";
    user = "root";
    passwd = "****";
  }
  /**
   * データベースに接続
   */
  public synchronized void open() throws Exception {
    // ドライバクラスをロード
    Class.forName(driver);
    // データベースへ接続
    con = DriverManager.getConnection(url,user,passwd);
    // ステートメントオブジェクトを生成
    stmt = con.createStatement();
  }
  /**
   * データベースから切断
   */
  public synchronized void close() throws Exception {
    if (stmt!=null) {
      stmt.close();
    }
    if (con!=null) {
      con.close();
    }
  }

  /**
   * クエリーを実行(検索)
   */
  public ResultSet executeQuery(String sql) throws Exception {
    return stmt.executeQuery(sql);
  }
  /**
   * クエリーを実行(新規、更新、削除)
   */
  public int executeUpdate(String sql) throws Exception {
    return stmt.executeUpdate(sql);
  }
}

labのところはスキーマ名を記述。あとはユーザとパスワードを各環境に合わせて修正すること。
ちなみに今回のlocalhostで接続したけどDBサーバの指定はどうすれば?


これでよいみたい↓(未検証)

jdbc:mysql://サーバ名:ポート/スキーマ?useUnicode=true&characterEncoding=sjis


3.呼び出し元クラスの作成

package info.searchman;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!?</h1>");

	DatabaseAccess db = new  DatabaseAccess();

	//  // データベースに接続
	try{
		db.open();
		
		ResultSet rs =db.executeQuery("SELECT * FROM items");
		
		//カラム"description"を出力
		while(rs.next()){
			out.println("<h1>" + rs.getString("description") +  "</h1>");
		}
		

	} catch (Exception e) {
	}

	out.println("</body>");
	out.println("</html>");
	
}
}


4.以下のurlにアクセスして正常に動作するか確認

http://localhost:8080/HelloWorld/servlet/hello

参考にしたサイト

http://www.hellohiro.com/jspdb.htm