我决定使用 Microsoft Access 作为数据库,而不是在我的 Java 项目中使用 MySQL xampp 服务器,但使用此语法进行查询时出现错误。这是我的 Java 代码
public static void main(String[] args) throws SQLException {
// TODO code application logic here
try {
conn = DriverManager.getConnection("jdbc:ucanaccess://C:\\Database.accdb;jackcessOpener=myproject.CryptCodecOpener","root", "");
System.out.println("successfuly connected");
Statement s = conn.createStatement();
PreparedStatement state = conn.prepareStatement("CREATE TABLE IF NOT EXISTS test(name varchar(400))");
state.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally {
}
这是错误:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.1 user lacks privilege or object not found: IF
at net.ucanaccess.jdbc.UcanaccessPreparedStatement.executeUpdate(UcanaccessPreparedStatement.java:256)
at myproject.MyProject.main(MyProject.java:31)
在 MySQL 中使用 IF NOT EXISTS
工作正常,但在 UCanAccess 中我收到了该错误,如果删除 IF NOT EXISTS
它工作正常。
最佳答案
UCanAccess 根本不支持 DDL 语句中的 IF NOT EXISTS
。你应该能够做这样的事情:
try (Statement s = conn.createStatement()) {
s.execute("CREATE TABLE test (name TEXT(50))");
} catch (UcanaccessSQLException ex) {
if (ex.getMessage().indexOf("object name already exists:") > 0) {
System.out.println("INFO: Table already exists.");
} else {
throw ex;
}
}
关于java - CREATE TABLE IF NOT EXISTS 在 UCanAccess 中引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38585551/