私のコードはJDBC接続を確立し、Microsoft SQL SMSを繰り返し照会します。しかし、時々私はエラーを取得する:ここでJDBC: "SocketException:Connection reset"により "SQLException:入出力エラー:接続リセットが発生しました"をキャッチ
"Exception in thread "main" java.sql.SQLException: I/O Error: Connection reset" followed by "Caused by: java.net.SocketException: Connection reset"
は私のコードは次のようになります。
public static void main(String[] args){
...
// Establish JDBC connection
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL, USER, PASS);
Statement stmt = conn.createStatement();
...
// Perform SQL query
for(int i=0; i<size; i++)
functionA(stmt); // <--line 62
...
}
public static void functionA(Statement stmt){
String aql = "INSERT INTO...";
stmt.executeUpdate(sql); // <-- line 105
}
私はデータとは関係のないいくつかの機能をテストするために、データベースを照会します。したがって、例外がスローされたときにプログラムが自動的に接続を再確立するようにして、それをそのまま実行しておくことができます。
質問: 1)try ... catchでJDBC接続を再確立することはできますか? 2)そうであれば、どの例外をキャッチし、どこにキャッチするか? 3)私はキャッチで何を置くべきですか?あなたが質問に記載された例外をキャッチしたい場合には
プログラムのどの部分がデータベースを「繰り返し照会」しますか? – Berger
functionAをラップするfor-loopです。 – Sean
例外のスタックトレースをスクリーンショットとしてではなくテキストとして含めてください。 –