CREATE TABLE IF NOT EXISTS在UCanAccess中抛出错误

时间:2016-07-26 09:06:17

标签: java sql ucanaccess

我没有在我的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它就可以了。

1 个答案:

答案 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;
    }
}