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.html
mysql->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();
}
}