Синтаксическая ошибка MySQL при использовании команды LIMIT с подготовленным оператором в Java

Я пишу код на Java и хочу каждый раз, когда я запускаю этот код, брать следующую строку из таблицы MySQL. Второй раз, когда я запускаю этот код, это так.

String timh1 = "1";
String timh2 = "2";
PreparedStatement st = null;
String sqlGrammes = "SELECT SURNAME ,KATHGORIA, AFM , NAME FROM EMPLOYEE LIMIT ?,? ";
try {
    st = connection.prepareStatement(sqlGrammes);
    st.setString(1, timh1);
    st.setString(2, timh2);

Но он показывает мне эту ошибку:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «1», «2» в строке 1.


person Community    schedule 11.07.2015    source источник
comment
Похоже, вы не можете параметризовать предельные значения.   -  person juergen d    schedule 11.07.2015
comment
может это, но зачем?   -  person    schedule 11.07.2015


Ответы (2)


limit принимает целые параметры, поэтому вы должны использовать ints, а не Strings:

int timh1 = 1;
int timh2 = 2;
PreparedStatement st = null;
String sqlGrammes = "SELECT SURNAME ,KATHGORIA, AFM , NAME FROM EMPLOYEE LIMIT ?,? ";
try {
    st = connection.prepareStatement(sqlGrammes);
    st.setInt(1, timh1); // notice the setInt
    st.setInt(2, timh2); // here too
person Mureinik    schedule 11.07.2015

Я смог сделать это без подготовленного оператора

int i = 0;
    int j = 1;
    sql = "Select SURNAME ,KATHGORIA, AFM , NAME FROM EMPLOYEE limit "+i+ ","+j;

получил первую строку в качестве вывода.

person Bhavik Patel    schedule 11.07.2015
comment
Остерегайтесь SQL-инъекций - person mumair; 11.11.2019