2015-04-08 3 views
0

Я имею себе объект под названием STMT, объект Connection сопп.как получить истинное или ложное, используя Execute() в Java Заявление

stmt = conn.createStatement(); 
boolean b = stmt.execute("INSERT INTO employee VALUES('E001', 'Smith')") 

Но это всегда приводит к ложных. Я хочу true если выше запрос выполнен успешно и false, если запрос не выполняется. Как я могу достичь этого результата с помощью метода execute().

ответ

5

Как я могу добиться этого результата используя метод execute().

Вы не можете. Он вернется только true, если в результате получится ResultSet. Если есть проблема с вашей вставкой, метод выдаст исключение.Из documentation: булево

выполнить (String SQL) бросает SQLException

Возвраты:

верно, если первый результат является объектом ResultSet; ложь, если это счетчик обновлений или нет результатов

Броски:

SQLException - если ошибка доступа к базе данных, этот метод вызывается на замкнутом Statement, метод вызывается на PreparedStatement или CallableStatement

SQLTimeoutException - когда водитель определил, что значение тайм-аута, который был указан с помощью метода setQueryTimeout был превышен и, по крайней мере пытались отменить запущенного в данный момент ничего о

+0

Спасибо большое. Я был очень смущен. Спасибо за разъяснения. –

0

Вы не можете, если это не запрос выбора.
Это то, что сказано в доке

Returns: 
true if the first result is a ResultSet object; false if it is an update count or there are no results`. 

вы получите набор результатов, когда вы даете запрос на выборке не тогда, когда вставка или обновление, вы получите ложной всегда в случае такого типа запроса.
Теперь, чтобы сделать это убедиться, если его запустить успешно или нет я думаю, работать с электронной Exceptions поможет вам

Использование executeUpdate() даст вам количество строк, так что вы можете использовать, чтобы предсказать.

0

Вы выполняете инструкцию insert, если есть результат, который имеет значения, возвращаемые из инструкции execute, будет результат. Check the documentation

2

Пробуйте использовать метод executeUpdate() на Statement. Он должен вернуть вам int, указывающий количество строк.

2

Statement.ececute() возвращает истину, если первый результат является объектом ResultSet, ложь, если это счетчик обновлений или нет результатов

Вы можете использовать

Int executeUpdate (строка SQL)

возвращает

1) количество строк для SQL Data Manipulation Language (DML) заявления или

2) 0 для операторов SQL, которые не возвращают ничего

Docs