java - CREATE TABLE IF NOT EXISTS 在 UCanAccess 中引发错误

标签 java sql ucanaccess

我决定使用 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/

相关文章:

php - 如何将一个表中的ID替换为另一表中的相应值?

java - 用户缺乏保存查询的权限或未找到对象错误

java - 如何将此代码转换为 prepared-statement 或 jdbc 中的语句?

java - 如何在 Java 中正确使用 try-catch-finally block ?

php - 将这两条 SQL 语句合二为一

java - UCanAccess:未找到合适的驱动程序

java - 如何使用 UCanAccess 创建两个表之间的关系?

java - 实现用户可以一起交互的网站的最佳方式是什么

java - 无法使用 Android Studio 新版本的模拟器运行 Android 项目

asp.net - 网络机器人问题