frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

じゃばってるー?。

ほげほげ。暑いなぁ。洗濯日和だよね。

そんな中、暑いけどPC使って復習中。

久々やなぁ、Java

かつてEclipseは特に設定に梃子摺ったので

今回は素直に図書館から「Eclipse3.3 完全攻略」借りてきて

それでインストールなんかしたり。

で、まぁ、基本的なところは直に整ったんだけど

先日入れたvmware上のCentOSmysql入れて、

そこに対して接続するにゃーどうするんだー?と思ったから試してみた。

そん時のメモ。

・まずCentOSMySQLを入れる

入れるっちゅーか、何故かサーバだけ入ってなかったので、とにかくインストール

yum install mysql-server

それから、起動

/etc/init.d/mysqld start

試しにmysqlに入る

mysql -u root -h localhost

root は例によってパスワードが設定されてないので、楽勝で入れた。

ってーか、後でパスワード設定せなアカンなぁ…。

なにはともあれ、んじゃ、mysql テーブルでも見てみるか。

mysql> use mysql;

mysql> show tables;

+---------------------------+

| Tables_in_mysql |

+---------------------------+

| columns_priv |

| db |

| func |

| help_category |

| help_keyword |

| help_relation |

| help_topic |

| host |

| tables_priv |

| time_zone |

| time_zone_leap_second |

| time_zone_name |

| time_zone_transition |

| time_zone_transition_type |

| user |

+---------------------------+

15 rows in set (0.01 sec)

んじゃ、この中の user テーブルでも見るように

昔書いたソースを書き直して実験してみましょー。

Eclipse内で書いた、適当なクラス

package net.anigon;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class ConnectionManager {

final static String DRIVER = "com.mysql.jdbc.Driver";

final static String URL = "jdbc:mysql://192.168.79.128/mysql"; // CentOS側のIPが192.168.79.128 なので

final static String USER = "anigon";

final static String PASS = "anigon_no_password";

public static void main(String[] args) {

Connection con = null;

java.sql.Statement st = null;

java.sql.ResultSet rs = null;

try {

Class.forName(DRIVER);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

String sql = "select * from user limit 5";

try {

con = DriverManager.getConnection(URL, USER, PASS);

st = con.createStatement();

rs = st.executeQuery( sql );

while(rs.next()) {

String resultString = "USER=" + rs.getString("User");

System.out.println(resultString);

}

} catch (SQLException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

} finally {

try { rs.close(); } catch( Exception e ) {}

try { st.close(); } catch( Exception e ) {}

try { con.close(); } catch( Exception e ) {}

}

}

}

…が、これだけだと、当然だけど、

CentOS上のMySQLにはアクセス拒否される。

Host 192.168.79.1 is not allowed to connect to this MySQL server

そこで、mysql側で、適当に以下を設定。

INSERT INTO user (Host,User,Password)

VALUES (

'192.168.79.1', -- これがアクセスする側のIPアドレス

'anigon',

PASSWORD('anigon_no_password')

);

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

ON *.* -- どのテーブルにも操作可能にしとく

TO anigon@'192.168.79.1'

IDENTIFIED BY 'anigon_no_password';

FLUSH PRIVILEGES;

これでさっきのクラスを実行すると…よし、成功しました。

USER=root

USER=root

USER=

USER=

USER=anigon

てな感じで、DB接続は成功したから、これでいいやー。

ついでに、以下は本読みながら、うだうだ書いたメモ。

・本見ながらJSPファイルを書いて実行したらエラー

org.apache.jasper.JasperException: 

絶対URI: http://struts.apache.org/struts/tags-html はweb.xml

このアプリケーションを配備したJARファイルのどちらかでも解決できません

/struts/ の部分が余計。要らないので消すと動く。

tags-bean も同じ。

Struts 使って、doGet のソースを本から書き写して実行したらエラー

HttpServletRequest のメソッドには getWriter はなくて

HttpServletResponse にあるので、req.getWriter じゃなくて resp.getWriter が正解。

・例によって、作ったメソッドの横に黄色いランプ(?)マークが現れる

あー、シリアルバージョンID設定せなアカンかったよね。

でも、本に書いてあるクイックフィックスって、なんだっけ?

…(調べた)クイックフィックスは、左側の行数の

電球マークをクリックすると出てくるウインドウ。

ここで「デフォルト・シリアル・バージョンIDの追加」を実行する。

・Statement と ResultSet が2種類

そうだった、そうだった。

mysqlの Statement と java.sql.Statement があるから

間違わないようにしないと、型の不一致とか出ちゃうんだよね。

ResultSet もね。

それにしても、真っ先に入れたいのは、やっぱりjadだね。

jad らぶ。