Проблема с вставкой строки в oracle

#java #oracle #insert

#java #Oracle #вставить

Вопрос:

Есть идеи, почему это не работает?

В имени таблицы есть TESTTABLE только один столбец с именем TEST_COLUMN , который является первичным ключом. Я уверен, что это что-то глупое, но подумал, что спрошу. Я уже подключен к базе данных, поэтому я не беспокоился о предоставлении этого кода

 Statement statement = connection.createStatement();
String test = "test";
statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES ("   test   ")");
  

выдает мне эту ошибку

 ORA-00984: column not allowed here
  

Ответ №1:

Я предполагаю, что это столбец varchar, поэтому попробуйте:

 statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES ('"   test   "')");
  

Обратите внимание на одинарные кавычки вокруг данных.

Комментарии:

1. Одинарные кавычки определенно решили проблему с головой. @auwall Вам следует изучить возможность использования PreparedStatement s , чтобы избежать внедрения SQL.

2. @auwall: Символьные константы данных в Oracle должны быть заключены в одинарные кавычки, что вы и предоставляете Oracle этим утверждением. Вообще говоря, построение динамических операторов таким образом в Oracle — плохая идея, как по причине состояний @pickypg, так и из-за проблем с производительностью. Вы должны использовать переменные привязки, когда это возможно.

3. хорошо, я сейчас этим займусь. однако вопрос. Я получил инструкцию из connection.createStatement(); Как мне получить PreparedStatement?

4. @auwall: Из того же соединения. Просто вызовите prepareStatement().

5. Спасибо, еще 20 минут назад я никогда не использовал ничего подобного, и теперь это работает идеально.