3
public void SQLconnect() {
try {
  System.out.println("Connecting to MySQL database...");
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  String conn = "jdbc:mysql://" + this.SQL_HOST/* + ":" + this.SQL_PORT */
      + "/" + this.SQL_DATA;
  this.con = DriverManager
      .getConnection(conn, this.SQL_USER, this.SQL_PASS);
} catch (ClassNotFoundException ex) {
  System.err.println("No MySQL driver found!");
} catch (SQLException ex) {
  System.err
      .println("Error while fetching MySQL connection!");
} catch (Exception ex) {
  System.err
      .println("Unknown error while fetching MySQL connection.");
 }
}

これは Java です。接続 "con" を使用して、別のスレッドから MySql データベースに接続できますか? または、これはスレッドセーフではありません。

スレッドセーフでない場合、どうすればよいですか?

4

2 に答える 2

2

スレッドセーフではありません。必要になるたびに新しい接続を取得する必要があります。メンバー変数であってはならず、常にローカル変数またはメソッドパラメーターである必要があります。

于 2012-08-19T01:22:39.460 に答える
1

JDBC では、Connection インターフェースはスレッドセーフではないため、自分で管理する必要があります。たとえば、毎回新しい接続を開いて閉じる必要があります。

便宜上、接続プールを使用できます。接続の開閉を管理するのは退屈な作業だからです。接続プールを使用すると、接続を取得して元に戻すだけで、プールは開いたすべての接続を管理して再利用します。C3P0またはDBCPをチェックアウトできます

于 2012-08-19T05:34:04.070 に答える