- PR -

MySQLについて

1
投稿者投稿内容
ac
会議室デビュー日: 2005/02/16
投稿数: 4
投稿日時: 2005-02-19 00:56
JDBCでJavaからMySQLに繋ごうとすると下記のようなエラーで出てしまって繋がりません。

java.sql.SQLException: Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException)


ソースコードは下記になります。

public class Sample {
public static void main(String args[]){
try{
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=SJIS";
Connection con = DriverManager.getConnection(url);
PreparedStatement pstmt = con.prepareStatement("select * from member");
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(2));
}
}catch(Exception e){
System.out.println(e.toString());
}
}

}


どなたかご教授ください。

--OS:winXP
--MySQL:3.23.47
--JDK:1.4.2
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-02-19 01:27
エラーメッセージの通りではないんですか?
すなわち、MySQL サーバが起動されていないか、もしくは使用するポート番号が 3306 以外に設定されているということです。

少し補足:
もし Norton Antivirus を起動しているなら止めてみてください。
これのウィルスチェックは非常に強力ですが、強力過ぎてハードウェアのドライバのインストールを妨害したり、ローカルであっても通信をブロックしてしまうことがあります。

あと、老婆心ながらいくつかアドバイスをば。
(1) 例外の処理は、Exception#toString() を表示するよりも、Exception#printStackTrace() を使った方が良いです。
前者は例外メッセージしか表示しませんが、後者は呼び出しのツリーをすべて出力してくれます。
ツリーの途中にあるメソッド内の誤りによって例外が発生することが多々あり、前者ではそれがわかりません。

(2) この程度のサンプルでは問題にならないかもしれませんが、Statement や Connection はきちんと close() する習慣を付けておいた方が良いと思います。

[ メッセージ編集済み 編集者: Gio 編集日時 2005-02-19 01:32 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-02-19 13:34
引用:

少し補足:
もし Norton Antivirus を起動しているなら止めてみてください。
これのウィルスチェックは非常に強力ですが、強力過ぎてハードウェアのドライバのインストールを妨害したり、ローカルであっても通信をブロックしてしまうことがあります。


通信のブロックはパーソナルファイアーウォールの仕事では・・・?
MySQLのJDBCドライバもウィルスチェックで特に影響を受けることはなさそうですが。
あるとすれば、jarファイルに対してのアクセス時であり、
javaそのものの起動が遅くなります。
(rt.jarにアクセスする際ウィルスチェックが行われるため)
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-02-20 04:48
すみません、ご指摘の通りです(_ _)

新しいファイルを置こうとする時は Antivirus が介入しますが、通信のブロックについては、Norton を例とするならば Internet Security と書くべきでした。
1

スキルアップ/キャリアアップ(JOB@IT)