을 기존 테이블을 찾을 수 없습니다. 그럼 난 아직 존재하고 몇 가지 기본 데이터로이 테이블을 채우고하지 않는 경우 테이블을 생성 init()
메서드를 호출 : 처음 EmbeddedDerbyDataConnection의 객체를 생성 한 후DatabaseMetaData의 번호에의 getTables 내가 자바 더비 데이터베이스에 연결하고있어 더비
private void init() throws SQLException {
DatabaseMetaData metaData = this.connection.getMetaData();
ResultSet rs = metaData.getTables(null, null, "mytable", null);
if (rs.next()) {
System.out.println("Table already exists.");
} else {
Statement stmt = this.connection.createStatement();
String query = "CREATE TABLE mytable (...)";
stmt.executeUpdate(query);
stmt.close();
stmt = this.connection.createStatement();
query = "INSERT INTO mytable VALUES (...)";
stmt.executeUpdate(query);
stmt.close();
}
}
를, 그것은 확인을 보였다. 나는 SELECT * FROM mytable
에 의해 그것을 테스트하고 나는이 테이블에 넣어 기본 데이터를 반환했습니다.
두 번째 호출 후 Exception in thread "main" java.sql.SQLException: Table/View 'mytable' already exists in Schema 'APP'.
init()
메서드의 ResultSet rs가 비어있는 것 같습니다. 그러나 SELECT * FROM mytable
을 호출 한 후 데이터가 있으며 올바른 것입니다.
어떻게 해결할 수 있습니까? 문제는 어디에있을 수 있습니까?
대/소문자 구분은 JDBC 사양에서 필요합니다 (예 : 패턴 매개 변수 _가 "데이터베이스에 저장된 테이블 이름과 일치해야 함"). 따라서 데이터베이스에서 따옴표로 묶지 않은 개체 이름을 대문자로 저장하면 패턴이 대문자로도 일치해야합니다. –