我没有在我的Java项目中使用MySQL xampp服务器,而是决定使用Microsoft Access作为我的数据库,但是在我的查询中使用这种语法出错了。这是我的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
它就可以了。
答案 0 :(得分:2)
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;
}
}