Java sql选择错误

Java sql选择错误,java,mysql,sql,prepared-statement,Java,Mysql,Sql,Prepared Statement,我有一个Java代码: String searchPerson = "select * from persons where surname like ? and TIMESTAMPDIFF(YEAR,dateOfBirth,CURDATE()) <= ?"; //connect to DB PreparedStatement statement = connect.prepareStatement(searchPerson); statement.setString(1,"%"+ sur

我有一个Java代码:

String searchPerson = "select * from persons where surname like ? and TIMESTAMPDIFF(YEAR,dateOfBirth,CURDATE()) <= ?";
//connect to DB
PreparedStatement statement = connect.prepareStatement(searchPerson);
statement.setString(1,"%"+ surname + "%");
statement.setInt(2, age);
ResultSet resultPerson = statement.executeQuery();
//..code
如何正确选择?救命啊


谢谢

在SQL中尝试更改行

"select * from persons where surname like ? and TIMESTAMPDIFF(YEAR,dateOfBirth,CURDATE()) <= ?";
但对于SQL,以下格式应该可以接受:

SELECT * FROM persons where surname like 'Name'

您是否手动检查了数据库中的sql语句?@ZerO不,我从未检查过,请先检查一下。如果请求在您的数据库中不起作用,您就知道您的请求有错误syntax@ZerO是的,我有不正确的请求,但我没有看到错误。我不太熟悉sql请求。但肯定有人能帮你。既然我们知道问题出在测试代码之后的请求结构上,那么我在TIMESTAMPDIFF(YEAR,dateOfBirth,CURDATE())中的
String searchPerson=“select*from persons”出现了错误,而我对Java没有太多经验,但如果选择*(所有内容),我怀疑错误来自于此从表中,它为您提供了一个结果数组,而不是一个字符串。要测试这一点,您可能可以修改查询如下:
从姓氏为“?”和TIMESTAMPDIFF(YEAR,dateOfBirth,CURDATE())的人员中选择姓氏@user3629171当你调用select*时,试着将其保存在列表na中,因为它提供了多个RecID。@Alex as u using resultset我不认为会有多个记录的问题prob是其他的,你可以发布stacktrace吗?@Alex@Krishna我对
字符串searchPerson=“select*from persons where timesdiff(年份,出生日期,CURDATE())
"select * from persons where surname like '?' and TIMESTAMPDIFF(YEAR,dateOfBirth,CURDATE()) <= ?";
SELECT * FROM persons where surname like Name
SELECT * FROM persons where surname like 'Name'