PreparedStatement.setString () метод без кавычек [дубликат]

11
задан Slavko 26 May 2010 в 23:12
поделиться

4 ответа

Параметры нельзя использовать для параметризации таблицы или параметризации каких-либо объектов базы данных. В основном они используются для параметризации предложений WHERE / HAVING.

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

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

17
ответ дан 3 December 2019 в 04:12
поделиться

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

3
ответ дан 3 December 2019 в 04:12
поделиться

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

Продолжайте использовать PreparedStatement и привязывайте свои переменные. Это того стоит, особенно если вы избегаете проблем с SQL-инъекциями.

3
ответ дан 3 December 2019 в 04:12
поделиться

Ошибка в том, что вы не можете передать имя таблицы в качестве параметра. Вы должны передавать значения только в SQL Statement.

Например: Если вы хотите :

Select * from LoggedUsers where username='whatever' and privilege='whatever';

то вы должны построить PreparedStatement как :

Select * from LoggedUsers where username=? and privilege=?

setString(1, usernameObject);
setString(2, privilegeObject);

Цель PreparedStatement - уменьшить сложность и читабельность кода подключения к базе данных. Когда разработчику приходится использовать так много значений столбцов с экземпляром Statement'а, так трудно ставить точки с запятой, запятые и плюс (оператор concat).

Я думаю, что вы ошибочно хотите воспользоваться этим, что не предназначено для этого....

2
ответ дан 3 December 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: