проблема с подготовкой заявления - PullRequest
0 голосов
/ 23 апреля 2011
preparedStatement = connection.prepareStatement("select fname,lname, "
                    + "sportman_code,start,finish,salary,amount,number,pnumber "
                    + "from sportman,customer "
                    + "where customer.customer_code = "
                    + "sportman.customer_code order by ? limit ?,?");



            preparedStatement.setString(1, "fname");
            preparedStatement.setInt(2, 0);
            preparedStatement.setInt(3, 9);
            resultSet = preparedStatement.executeQuery();

порядок не работает. почему?

когда я вместо этого поставлю fname? это работает правильно.

"sportman.customer_code order by fname limit ?,?");

как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 23 апреля 2011

Ваш ORDER BY работает, но не так, как вы ожидаете. Когда вы используете

 preparedStatement.setString(1, "fname");

он сделает заказ таким образом

 ORDER BY 'fname'

и не так, как вы ожидаете

 ORDER BY fname

Код в вашем вопросе будет аналогичен сортировке пакета M & Ms по алфавиту

1 голос
/ 23 апреля 2011

Вы не можете привязывать идентификаторы, такие как имена таблиц или столбцов, только значения, которые вы хотите вставить, сравнить и т. Д.

0 голосов
/ 23 апреля 2011

Привязка работает для литералов в запросе, а не для ключевых слов или идентификаторов. Вам нужно будет использовать другой подход для очистки поля сортировки, если вы хотите, чтобы оно было динамическим.

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