Почему мой код не достигает второго метода execute? - PullRequest
1 голос
/ 06 января 2020

У меня есть метод с именем dropTable, который отправляет запрос SQL в базу данных, чтобы проверить, существует ли таблица или нет. Если это так, он падает на стол. Я отправляю другой запрос, сообщающий ему о создании таблицы.

Когда я запускаю код, я получаю сообщение об ошибке:

ОШИБКА: синтаксическая ошибка в или около "IF" Позиция: 1 `, который указывает на строку с первым методом execute.

У меня есть операторы print, чтобы увидеть, куда код достигает, и он никогда не достигает прошлого метода execute.

public static void dropTable(Connection conn, String name, String description) {
    Statement st = null;
    try {
        st = conn.createStatement();

        System.out.println("hello");
        st.execute("IF EXISTS (SELECT * FROM sys.tables WHERE NAME = '" + name + "' AND TYPE = 'U') DROP TABLE " + name);
        System.out.println("done");

        st.execute("CREATE TABLE " + description);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

Что-то не так делаю?

1 Ответ

0 голосов
/ 06 января 2020

В Microsoft SQL Server 2016 объекты могут DIE ( Отбрасывать, если существует ).

ОТКЛЮЧИТЬ, ЕСЛИ СУЩЕСТВУЕТ - новая вещь в SQL Server 2016

Попробуйте использовать DROP TABLE IF EXISTS dbo.TableName, если ваша версия поддерживает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...