2012-02-20 29 views
0

非常にシンプルなアプリケーションを作成しようとしていましたが、メインウィンドウをロードするときにプログラムがDBに接続します。JavaデスクトップアプリケーションでJDBC経由でOracle DBに接続できません

私はDBへの接続の部分をコメントすれば正常に動作します。アプリはエラーを表示せず、例外もスローしないので、何が間違っているかわかりません。私は私のコードをポスト:

public final class Database { 
    private final String dbURL = "jdbc:oracle:thin:@" + dbHost + ":" + dbPort + ":" + dbService; 
    private final String dbDriver = "oracle.jdbc.driver.OracleDriver"; 
    private Connection connection = null; 

    public Database() { 
     try { 
      System.out.println("Aqui 1"); 
      Class.forName(dbDriver); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    private void connect() { 
     System.out.println("Dentro"); 
     try { 
      connection = DriverManager.getConnection(dbURL, dbUser, dbPass); 
     } catch (SQLException ex) { 
      Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    private void disconnect() { 
     try { 
      connection.close(); 
     } catch (SQLException ex) { 
      Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    public void numeroErrores(String dependencia){ 
     System.out.println("Hola"); 
     connect(); 
     disconnect(); 
     System.out.print("Adios"); 
    } 
} 

dbUserの、DBPASS、DBHOST、dbportは、dbServiceは、その正しい値に設定されている、私がチェックしたし、それらを再確認し、また、私は私が正しいjarファイルを追加したと確信していますoracle-jdbcです。 connect()メソッドを呼び出すと、何かがハングアップします(何も表示されず、何も表示されませんが、System.out.printlnがそこに置かれます)。

+0

がどのようにこれをデバッグしていることを確認しますか?何らかの例外が必要です。 – Max

+0

例外はありません。何もありません。NetBeansで作業していて、デバッガを使用して、何かが見えるかどうかを確認しました...何が間違っているかを確認するにはどうすればよいですか?ここに投稿するためにデバッグを調べることができますか? – BRabbit27

+0

ポートが開いている(ファイアウォール - ローカルまたはその中間に)リスナーがホストからのリモート接続を受け入れていますか?私はしばしばJavaベースのクエリツールを使用して、Javaによるリモート接続を確認します。 – hburde

答えて

0

十分なデバッグプリントやcatchステートメントはありません
あなたがいる場所を正確に知っているので、すべての行にデバッグプリントを追加し、デバッガを持っていけない場合は、そのデータ
を追加するかどうかを確認し、一般的な例外とThrowableの両方をキャッチしてみあなたはojdbc6.jarはを持っている場合は
、DriverManager.getConnectionを前にこの権利を追加してみてください:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

だけ

+0

一般的なExceptionとThrowableで試したところ、メッセージはまったくありません。私はojdbc6.jarを使用していて、あなたが投稿した行だけで何も試していません。いくつかのプリントを使用して、 'connection = DriverManager.getConnection()'がうまく動作する前に見つかったのですが、何らかの理由でプログラムがその行を通過することはなく、 'getConnection()'メソッド内のループかもしれません。 – BRabbit27

+0

接続のタイムアウトが非常に長くなることがあります(最大数分)。 3〜5分待って接続タイムアウトが発生するかどうかを確認できます。 dbマシンにpingできますか? –

+0

私は何かが(うまくいけば)表示するまでアプリを実行させます。 dbマシンは大丈夫です。sqlDeveloperを使用していくつかのクエリを作成しています。タイムアウトが表示されたら投稿します。 – BRabbit27

関連する問題