My SQLインスール for Windows
世の中にはXAMPPという便利なツールがあるみたいですが、上記ですでにTomcatインストールしている ので、My SQLだけ単独でインストールします。ちなみに以下がXAMPPのサイト
https://www.apachefriends.org/jp/index.htmlMy SQLをインストールします。以下のサイトが参考になりますが、インストールの ところはかなり変わっています。
http://www.kkaneko.com/rinkou/mysql/mysqlinstall.htmlOracle eDelivery とかでMy SQLでSearchしてからインストールしなくてはいけません。 "MySQL Installer 5.6.18.0 Package"をダウンロードしましょう。
ダウンロードしたZIPを回答して、インストーラーを起動します。途中にLogin/Password聞かれるところでなぜかエラーになるけどそのままインストール を続けます。
インストールが終わるとWindowsのプログラムにCommand Line Clientというのができる のでそれで操作できます
http://www.kkaneko.com/rinkou/mysql/command.htmlmysql->mysql> CREATE DATABASE testdb DEFAULT CHARACTER SET cp932 COLLATE cp932_japanese_ci; mysql> use testdb; mysql> CREATE TABLE commodity ( -> type INTEGER primary key not null, -> name VARCHAR(32) not null, -> price INTEGER ); mysql> INSERT INTO commodity VALUES( 1, 'apple', 50 ); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO commodity VALUES( 2, 'orange', 20 ); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO commodity VALUES( 3, 'strawberry', 100 ); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM commodity; +------+------------+-------+ | type | name | price | +------+------------+-------+ | 1 | apple | 50 | | 2 | orange | 20 | | 3 | strawberry | 100 | +------+------------+-------+ 3 rows in set (0.00 sec)
ServletとMySQLの接続
Databaseと接続するためにはコネクタをインストールする必要があります。 コネクタはそれぞれにデータベースによって異なります。ここでは、以下の ページより、My SQLのコネクタをインストールしてください。
http://www-jp.mysql.com/products/connector/1. JDBC Driver for MySQL (Connector/J)を選択 2. platform independentを選択 3. mysql-connector-java-5.1.30.zipをダウンロード 4. 解凍したフォルダを適当な場所に置く C:\Program Files\Java\mysql-connector-java-5.1.30 5.jarファイルをTomcatのフォルダに置く C:\hoge\apache-tomcat-7.0.53\lib
Servletを以下のように記述すれば、先ほどのCommodityからデータを取得する ことが可能。
@WebServlet("/HelloMySQL") public class HelloMySQL extends HttpServlet { private static final long serialVersionUID = 1L; final private static String DBNAME = "testdb"; // Database Name final private static String USER = "XXXXX"; // user name for DB. final private static String PASS = "XXXXX"; // password for DB. final private static String JDBCDriver = "com.mysql.jdbc.Driver"; final private static String DBURL = "jdbc:mysql://localhost/" + DBNAME; /** * @see HttpServlet#HttpServlet() */ public HelloMySQL() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Connection conn = connect(); if (conn != null) { Statement stmt = null; ResultSet rs = null; try { conn.setReadOnly(true); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from commodity"); String resString = "commodity: "; while (rs.next()) { resString += rs.getString("name") + ", "; } response.getWriter().write(resString); } catch (SQLException e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } disconnect(conn); } } else { response.getWriter().write("Hello, My SQL not connected!"); } } private Connection connect() { Connection conn = null; try { Class.forName(JDBCDriver).newInstance(); System.setProperty("jdbc.driver",JDBCDriver); } catch (Exception e) { e.printStackTrace(); return null; } try { conn = DriverManager.getConnection(DBURL, USER, PASS); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return conn; } private void disconnect(Connection conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } }