Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用LIMIT命令和Prepared语句时出现MySQL语法错误_Java_Mysql_Jdbc_Prepared Statement_Sql Limit - Fatal编程技术网

在Java中使用LIMIT命令和Prepared语句时出现MySQL语法错误

在Java中使用LIMIT命令和Prepared语句时出现MySQL语法错误,java,mysql,jdbc,prepared-statement,sql-limit,Java,Mysql,Jdbc,Prepared Statement,Sql Limit,我正在用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);

我正在用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行“1”和“2”附近使用的正确语法


limit
接受整数参数,因此应该使用
int
s,而不是
String
s:

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

没有事先准备好的声明,我就能做到这一点

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

将第一行作为输出。

看起来您无法参数化限制值。可能是这样,但为什么?请注意SQL注入