全て。
私は英語がうまく話せません..ごめんなさい。
Java プログラムの DB 接続に問題があります。
最初のコードは、各クエリの各接続を取得しています。
2 番目のコードは、クエリごとに 1 つの接続を使用するだけです。
ここにサンプルコードがあります。
例 #1
public void func() {
Connection conn = null;
try {
conn = getConnection();
//Just example..
//Here, it is assumed that it has been successfully executed.
String value1 = selectValue1(conn);
conn.close();
conn = getConnection();
String value2 = selectValue(conn);
conn.close();
} catch(Exception e) {
....
} finally {
try {
if (conn != null)
conn.close();
} catch(Exception e2) { }
}
}
例 #2
public void func() {
Connection conn = null;
try {
conn = getConnection();
//Just example..
//Here, it is assumed that it has been successfully executed.
String value1 = selectValue1(conn);
String value2 = selectValue2(conn);
} catch(Exception e) {
....
} finally {
try {
if (conn != null)
conn.close();
} catch(Exception e) { }
}
}
どちらも機能的に実行されます。
しかし、性能テストを行っていると、問題が頻繁に発生しました。(同様のコードを実行するクラスは約 10 あります。)
**java.sql.SQLException: Connection does not exist**
at Altibase.jdbc.driver.ex.exception(ex.java:52) ~[Altibase.jar:na]
at Altibase.jdbc.driver.ex.exception(ex.java:37) ~[Altibase.jar:na]
at Altibase.jdbc.driver.cmnTCP.send(cmnTCP.java:318) ~[Altibase.jar:na]
at Altibase.jdbc.driver.cmp.flush(cmp.java:252) ~[Altibase.jar:na]
at Altibase.jdbc.driver.cmp.writePrepareProtocol(cmp.java:1590) ~[Altibase.jar:na]
at Altibase.jdbc.driver.ABConnection.prepare(ABConnection.java:1002) ~[Altibase.jar:na]
at Altibase.jdbc.driver.ABPreparedStatement.<init>(ABPreparedStatement.java:62) ~[Altibase.jar:na]
at Altibase.jdbc.driver.ABConnection.prepareStatement(ABConnection.java:1060) ~[Altibase.jar:na]
at Altibase.jdbc.driver.ABConnection.prepareStatement(ABConnection.java:1055) ~[Altibase.jar:na]
at Altibase.jdbc.driver.ABConnection.prepareStatement(ABConnection.java:1033) ~[Altibase.jar:na]
at net.herit.ini.dbpool.PooledConnection.prepareStatement(PooledConnection.java:138) ~[slee.jar:na]
この問題を解決するにはどうすればよいですか? または違いは何ですか?&-|
どうも。