0

MySQL というクラスを作成しました。

このクラスには、データベースに接続するメソッドが 1 つだけ含まれています。

public static void Connect() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException ex) {
        System.out.println(ex.getMessage());
    }
    try {

        connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/"+database,username,password);

    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
    }
}

だから今、JSPページ内で接続する必要があるときは、これを書きます。

<% MySQL.Connect();
   Statement stmt = MySQL.getConnection().createStatement();
   ResultSet rset = stmt.executeQuery("....");
   //Some codes here
   //Then I close both rset and stmt
   rset.close();
   stmt.close();
%>

接続も閉じる必要がありますか?ページが読み込まれると、さらに多くのクエリが実行されることに注意してください。すべてのクエリに対して 1 つの接続で作業するか、クエリごとに 1 つの接続で作業してから閉じる必要がありますか?

4

2 に答える 2

1

理想的には、ページをレンダリングしている間は1つの接続を使用し、ページの最後でそれを閉じます。

これには、ページのレンダリングを開始すると、接続プールが使い果たされたために途中で接続が失われることがないため、完了できるという効果があります(また、接続を直接確立するのではなく、接続プールを使用する必要があります。ページのパフォーマンスを評価します。

于 2012-10-25T16:24:19.933 に答える
0

1、 jspで直接接続を取得することはお勧めできません。

2、同じページで実行されるクエリごとに個別の接続を作成する必要はありません。また、その接続で実行している操作に基づいています。

3、接続を開くときはいつでも、接続を閉じる必要があります。そうしないと、漏れが問題になります。

4、接続を閉じる前に、それらがnullでないことを確認してください。したがって、nullityチェックが重要です。そうしないと、nullpointer例外が発生する可能性があります。

5、 finallyブロックで接続を閉じて、オブジェクトがガベージコレクションされるときに、接続に基づいてそれ以上の操作が行われないようにします。finallyブロックで接続を閉じる作業を行います。*

于 2012-10-25T16:56:26.643 に答える