JDB C Уловка создания таблицы не ошибается, как я ожидаю - PullRequest
0 голосов
/ 21 апреля 2020

Я создавал приложение Java, которое может взаимодействовать с локальным MySQL сервером, следуя руководству, но я создал оператор try, который успешно создает таблицу, но я не понимаю, почему, когда я повторно Запустите команду. Я продолжаю получать приглашение «таблица создана успешно» в моей командной строке, когда я указал в SQL создание таблицы, ЕСЛИ ее не существует. Оператор try не видит ошибку SQL?

    public static void createTable() throws Exception{
    try{
        Connection conn = getConnection();
        //Create table if it does not exist
        PreparedStatement create = conn.prepareStatement("CREATE TABLE IF NOT EXISTS supplier(suppID int NOT NULL AUTO_INCREMENT, suppName varchar(100), suppCollection varchar(100), PRIMARY KEY(suppID))");
        create.executeUpdate();
    }catch(Exception e){System.out.println("Create Table error..");}
    finally{
        System.out.println("Table creation complete...");
    };
}

Это не вызывает никаких проблем с моей базой данных, я просто хотел бы, чтобы строка, созданная таблицей, создавалась ТОЛЬКО тогда, когда она на самом деле создание таблицы, так как в этом случае таблица уже существует, поэтому она не создает новую таблицу?

1 Ответ

1 голос
/ 21 апреля 2020

Вместо использования try / catch вы должны проверить возвращаемое значение executeUpdate ():
Как узнать, выполнен ли оператор sql в java?

Я думаю, что вы не получите ошибку, когда таблица уже существует, она просто ничего не делает. Если ошибка не выдана, ваша часть "catch" игнорируется.

if(create.executeUpdate() > 0) {
   System.out.println("Table created");
}
else{
    System.out.println("Table was not created");
}
...