2015-11-22 2 views
0

Когда я попытался выполнить это утверждение, я получил ошибку. Я создал массив mem[], который содержит имена таблиц, и в каждой таблице есть два столбца с именами amt(float(9,2)) и comb(varchar(5)).ошибка при использовании подготовленного состояния

Я использовал это заявление внутри для цикла:

PreparedStatement pst =con.prepareStatement("select sum(amt) from ? where comb = ?"); 
pst.setString(1,mem[i]); 
pst.setString(2, "all"); 

Ошибка:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''akhil' where comb = 'all'' at line 1

В описании ошибки вблизи Akhil и все с одной стороны он показывает единственную цитату и другой стороне двойную котировку. Почему это так выглядит? Что такое ошибка?

ответ

1

Параметры в PreparedStatement не могут заменить имена таблиц или имена столбцов. Они могут заменять только значения. Для каждой таблицы вам понадобится отдельный PreparedStatement.

+0

Мне нужно получить доступ к 6 таблицам. Есть ли способ написать код в ближайшее время, а не писать его отдельно для каждой таблицы –

Смежные вопросы