Jdbc Derby DB:表/视图不';不存在错误42X05 我安装了一个Derby DB,并打开了一个名为“MyDbTest”的连接
我使用SQL命令为“MyDbTest”连接创建了一个名为BOOK的表: 创建表BOOK(ID INT、DESCRIPTION VARCHAR(20)、UNITCOST VARCHAR(20)、ISBN VARCHAR(20)、nbofpage INT)Jdbc Derby DB:表/视图不';不存在错误42X05 我安装了一个Derby DB,并打开了一个名为“MyDbTest”的连接,jdbc,derby,Jdbc,Derby,我使用SQL命令为“MyDbTest”连接创建了一个名为BOOK的表: 创建表BOOK(ID INT、DESCRIPTION VARCHAR(20)、UNITCOST VARCHAR(20)、ISBN VARCHAR(20)、nbofpage INT) 我使用命令“startNetworkServer.bat”运行Derby服务器 我运行了以下代码(使用openjpa): 公共班机{ public static void main(String[] args) throws SQLExcep
public static void main(String[] args) throws SQLException, ClassNotFoundException {
System.out.println("\n\n>>> Executing : " + Main.class.toString() + " <<<\n");
persistBook(new Book(new Long(5000), "H2G2", "Best IT Scifi Book", new Float(12.5), "1234-5678-5678",
new Integer(247)));
Book book = findBook(new Long(5000));
System.out.println("# " + book);
}
/**
* Gets a database connection
*/
static {
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private static Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:derby://localhost:1527/MyDbTest;create=true", "app", "app");
}
/**
* Persists the book to the database
*/
private static void persistBook(Book book) throws SQLException {
String query = "INSERT INTO BOOK (ID, TITLE, DESCRIPTION, UNITCOST, ISBN, NBOFPAGE) VALUES (?, ?, ?, ?, ?, ?)";
try (PreparedStatement stmt = getConnection().prepareStatement(query)) {
stmt.setLong(1, book.getId().longValue());
stmt.setString(2, book.getTitle());
stmt.setString(3, book.getDescription());
stmt.setFloat(4, book.getUnitCost().longValue());
stmt.setString(5, book.getIsbn());
stmt.setInt(6, book.getNbOfPage().intValue());
stmt.executeUpdate();
}
}
}
publicstaticvoidmain(字符串[]args)抛出SQLException、ClassNotFoundException{
System.out.println(“\n\n>>>正在执行:”+Main.class.toString()+“我出现此错误,因为我在SELECT语句中使用了数据库名称而不是表的名称。创建表的过程不清楚。很难说。可能你的程序没有连接到同一个数据库?可能是不同的用户和/或架构?我考虑过了。我键入了ij shell:“显示连接”,我得到了:CONNECTION0*-jdbc:derby:MyDbTest*=current connectionAlso,代码中没有JPA。它只是jdbc。除此之外,代码没有关闭数据库连接。这应该是固定的。derby中“表不存在”的3个常见原因:可能是