MySQLを利用して英和辞書アプリケーションを作成してみよう。
準備
1.辞書データとして、クジラハンドさんが提供してくれている著作権フリーの英和辞書(TSVファイル)を準備する。(下から同一のものをダウンロードできる)
2.解凍してejdic-hand-utf8.txtをテキストエディターで開いてみよう。
英単語と意味がタブ区切りで並ぶTSVファイルであることがわかる。

3.このファイルをもとにDBを作成しよう。まずはMySQLに以下のコマンド打ちejwordデータベースを作成する。
CREATE DATABASE ejword DEFAULT CHARACTER SET utf8;
4.wordsテーブルを以下のように作成。
CREATE TABLE words( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255), body text );
5.エクリプスで新規動的プロジェクトを作成しプロジェクト名をejwordとする。
6.プロジェクトの直下にassetsフォルダを新規に作成し、そこにejdic-hand-utf8.txtを貼り付ける。

DBにインサート
7.WEB-INF/libの中にjdbcを貼り付ける(詳しくはこちらの記事参照)
8.Java Resources/srcフォルダの下にutilパッケージを作成し、その中にCreateDB.javaを以下のように作成する。(Servletではなく、mainメソッドのある普通のクラスである点に注意)
●util.CreateDB.java
package util;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CreateDB {
//メインメソッド
public static void main(String[] args) {
try {
//ファイル読み込み
FileInputStream fis = new FileInputStream("assets/ejdic-hand-utf8.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
//データソースを利用せずダイレクトに接続する。
//Class.forName("com.mysql.jdbc.Driver");
Class.forName("org.mariadb.jdbc.Driver");
//String url="jdbc:mysql://localhost:3306/ejword?useUnicode=true&characterEncoding=utf8";
String url="jdbc:mariadb://localhost:3306/ejword?useUnicode=true&characterEncoding=utf8";
String user = "root";
String pass = "root";//パスワード設定を指定ない人は""と空文字にする
Connection db = DriverManager.getConnection(url, user, pass);
//トランザクション処理開始
db.setAutoCommit(false);
PreparedStatement ps = db.prepareStatement("INSERT INTO words(title,body) VALUES(?,?)");
String line;
while ((line = br.readLine()) != null) {
//1行毎にデータを登録していく
String[] vals = line.split("\t");
ps.setString(1, vals[0]);
ps.setString(2, vals[1]);
ps.executeUpdate();
}
//例外が発生しなければcommit(確定)
db.commit();
db.close();
br.close();
//時間がかかる処理なのでコンソールで終了を伝える。
System.out.println("done!");
} catch (IOException | SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
9.ConnectDB.javaをJavaアプリケーションとして実行しよう。コンソールにdone!と表示され、DBにデータが入っていれば成功だ。


JSP & Servlet-15日目(英和辞書アプリの作成2)
英和辞書アプリの作成を前回の続きから行う。準備1.META-INFの直下にcontext.xmlを配置する。passwordのところはusernameとpasswardはDB接続時に必要な値を入れる。もし、パスワードの設定を指定にない人はp...
コメント