Что значит "=?"представлять при использовании в запросе SQL - PullRequest
4 голосов
/ 03 февраля 2012

Я довольно новичок в SQL, и сейчас я переделываю Java-программу, которая программист разработал. Когда я печатаю одно из его операторов выбора запроса, скрипт содержит синтаксис sql:

SELECT * from database WHERE id = ?

Я просто хочу знать, что =? должен делать? Я гуглил и не могу найти подходящий ответ.

Ответы [ 5 ]

5 голосов
/ 03 февраля 2012

Это не нотация SQL, а нотация JDBC (Java Database Connectivity) . ? заменяется параметром, который указывается отдельно. Использование этого подхода вместо попытки самостоятельно подставить параметр в строку помогает предотвратить риск SQL-инъекции .

1 голос
/ 03 февраля 2012

? - это заполнитель, используемый в запросах SQL при использовании с JDBC Подготовленный оператор . Использование подготовленного оператора имеет преимуществ по сравнению с обычным оператором , особенно когда вы используете его несколько раз (скажем, в цикле).

1 голос
/ 03 февраля 2012

Скорее всего, вы используете инструмент, который заменит "?"с фактическим значением.Я видел это в других инструментах, таких как SQL DTS (Data Transformation Services) ... но это показывает, сколько мне лет:)

? не является частью языка SQL.

1 голос
/ 03 февраля 2012

? - это заполнитель, параметр, так что вы можете передавать его динамически и возвращать разные результаты для разных параметров.

Где-то в коде вы должны увидеть, что он добавляет параметр в объект Statement и выполняет его.

0 голосов
/ 05 февраля 2012

Вот пример:

PreparedStatement ps = 
    connection.prepareStatement("select name from users where user_name = ?");
ps.setString(1, "user1");

"?"получает замену на «user1», когда запрос выполняется, и возвращается имя пользователя с именем пользователя «user1».

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