2006年7月12日

[mysql 13159] JDBCドライバーを使用して遠隔からDB操作

初めまして、Jackと申します。
まだまだ初心者の域を脱しておりませんが、よろしくお願い致します。

Java Swingアプリ上からSQLを発行してMySQL5.0.11のデー
タを操作し
結果を表示させるアプリを作成しております。

localhost上は軽快に動くのですが、ネットワーク越しにデータ操作を
すると
ものすごく重く遅くなることが判明しました。
基本的にデータを必要としない操作に関してはそれほど動きは悪くない
ので
Swingアプリ自体に問題はないと思います。

JDBCドライバー:mysql-connector-java-3.1.10-bin.jar

環境としましては
DBサーバー:Windows XP
MySQL 5.0.11
IP(例) 192.168.0.5


クライアント: Windows XP
IP(例) 192.168.0.6

JavaのClassフォルダー内に
JDBCドライバー mysql-connector-java-3.1.10-bin.jar
を置いて、

>Java -classpath ".;.\mysql -connector-java-3.1.10-bin.jar"
Login (Enter)

でLogin.classを起動しております。

そこでお聞きしたい事は、JDBCドライバーはネットワーク越しで
はパフォーマンス
がかなり落ちるのでしょうか?
それともMySQLの設定、JDBCの使い方に問題があるので
しょうか?


以下、接続に必要なJavaソースファイルの部分ですがおそらく
オーソドックスだと思います。


よろしくお願い致します。
------
import java.sql.*;
import java.sql.Connection;
import java.sql.ResultSet;

public class MySQLManager implements DatabaseManager {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;

public void openResource() {
//String url = "jdbc:mysql://localhost/kahns";
String url = "jdbc:mysql://192.168.0.5:3306/(データベース名)";
String param = "?userUnicode=true&characterEncoding=sjis";
String usr = "myuser";
String pwd = "********";


//JDBCドライバーのロード
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();

//接続の確立
con = DriverManager.getConnection(url + param, usr, pwd);

//ステートメントの取得
stmt = con.createStatement();

} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

}

public void closeResource() {
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

public ResultSet getData(String sql) {
if (stmt != null){
try {
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
return rs;
}

public void addData(String sql) {
if (stmt != null){
try {
con.setAutoCommit(false);
stmt.executeUpdate(sql);
con.commit();
} catch (SQLException e) {
try {
con.rollback();
throw new RuntimeException("データの登録が失敗しました。");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}

}

}

投稿者 xml-rpc : 2006年7月12日 15:16
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39417
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。