dポイントプレゼントキャンペーン実施中!

JDBC経由でOracleに接続して、接続しっぱなしにしたいのですが、どうすればいいのかよくわかりません。
とりあえず正常終了するようなソースを書いてみました。このソースからconnectionをCloseしないように編集したいのですが、どうすればいいのかわかりません。
やりたいことはJDBCの複数同時Connectionを試したくて、このConnectionを維持したまま、何回かこのプログラムを実行すればいいかなと思っているんですが。
長くなりましたが、よろしくお願いします。

import java.sql.*;

class Employee
{
public static void main (String args [])
throws SQLException
{
// Load the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

// Connect to the database
// You must put a database name after the @ sign in the connection URL.
// You can use either the fully specified SQL*net syntax or a short cut
// syntax as <host>:<port>:<sid>. The example uses the short cut syntax.
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:@HOST:PORT:SID",
"scott", "tiger");

// Create a Statement
Statement stmt = conn.createStatement ();

// Select the ENAME column from the EMP table
ResultSet rset = stmt.executeQuery ("select ENAME from EMP");

// Iterate through the result and print the employee names
while (rset.next ())
System.out.println (rset.getString (1));
}
}

A 回答 (3件)

Connection#finally()が走ったりプログラムが終了すると


クローズされてしまいます。

コネクションのインスタンスを保持するようにしましょう。
簡単な改修は、以下のようなものです。
いくつコネクションを保持するかはループ回数で
調整してください。

public static void main (String args []) {
List conList = new ArrayList();

for (int i = 0; i < 10; i++) {
// もともとのロジックの内容
conList.add(conn); // Connectionのインスタンスを保持
}
}
    • good
    • 0

複数スレッドで実行してみては?



Threadクラスを継承してrun()メソッドの中に
質問のmain()メソッドの中身を書いて、
main()メソッドの中では複数のThreadを起動して実行する。
ってな感じで。
    • good
    • 0

>このConnectionを維持したまま、何回かこのプログラムを実行すればいいかなと思っているんですが。



試してみればいいのでは?
容易に試せない環境なのかな?

質問を読む限りでは、その方法でも問題ないと思うのですが。

この回答への補足

実際に試してみたのですが、プログラムが終了すると、Connectionも切断されてしまいます。バッチ等で複数回実行してみても一つの処理が終了してから次の処理へいくので複数のConnectionを作成することができないんです。

補足日時:2005/06/23 13:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!