2016-07-13 18 views
0

私はJavaFXアプリケーションを作成しています。データベースに接続しました。しかし、私はテーブルからデータを取得するときにエラーが表示されますH2データベース、テーブルからデータを取得する際の問題

org.h2.jdbc.JdbcSQLException:テーブル "LECTURE"が見つかりませんでした。 SQL文の :講演[42102から192]

とFROM SELECT NAME私は、データベースへの接続だ100%確信していると、テーブルは間違いなくあり、これは、なぜ上の任意の提案ですか?あなたはそれがテーブルが存在しないと言う場合は、実行

private void onLoadYearSelect() { 

    try { 
     Connection con = ConnectionFactory.getConnection(); 
     Statement stat = con.createStatement(); 
     String query = "SELECT NAME FROM Lecture"; 
     ResultSet years = stat.executeQuery(query); 
     while(years.next()){ 
      yearSelect.setValue(years.getString("NAME")); 
      System.out.println(years.getString("NAME")); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 
public void initialize(){ 
    onLoadYearSelect(); 
} 

答えて

0

public class ConnectionFactory { 
    //static reference to itself 
    private static ConnectionFactory instance = new ConnectionFactory(); 
    public static final String URL = "jdbc:h2:file:~/db\\."; 
    public static final String USER = "notepad"; 
    public static final String PASSWORD = "password"; 
    public static final String DRIVER_CLASS = "org.h2.Driver"; 

    //private constructor 
    private ConnectionFactory() { 
     try { 
      Class.forName(DRIVER_CLASS); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 

    private Connection createConnection() { 
     Connection connection = null; 
     try { 
      connection = DriverManager.getConnection(URL, USER, PASSWORD); 
     } catch (SQLException e) { 
      System.out.println("ERROR: Unable to Connect to Database."); 
     } 
     return connection; 
    } 

    public static Connection getConnection() { 
     return instance.createConnection(); 
    } 
} 

、クエリを見ることができるように

聞くが、その後、私の接続コードと私は実行しているコードです。それは本当に存在しません。

おそらく、実際には正しいデータベースに接続していない可能性があります。実際、既定では、接続文字列が存在しないデータベースを指している場合は、その場で空のデータベースが作成され、エラーが説明されます。

2番目のデータベースが既にどこかに作成されている可能性がありますので、おそらく遅すぎますが、この混乱を避けるため、接続文字列にIFEXISTS=TRUEを含めることは悪い考えではありません。本当の問題を隠す空のものを作り出すのではなく、存在します。

public static final String URL = "jdbc:h2:file:~/db\\.;IFEXISTS=TRUE"; 

しかし、あなたはまだ問題をデバッグしようとすることができる一つのことは、接続文字列にIFEXISTS=TRUEを追加することです。次に、データベース名をに変更するか、接続文字列を無効にするためにに接続する必要があります。基本的に、失敗するように強制します。コードがまだデータベースに正常に接続している場合は、接続文字列があなたが思う場所を指していないことがわかります。

+0

しかし、私が作成したパスワードとユーザー名と、データベースをクリックしてプロパティを取得したときのデータベースへのパスを使用してデータベースに接続しています。ドロップダウンの下にはテーブルがあります。 –

+0

今日は仕事が始まったばかりです。私のIDEがプレイしていなければなりません。 –

関連する問題