Java程序在使用LIKE SQL语句时未定位所有关键字

Java程序在使用LIKE SQL语句时未定位所有关键字,java,mysql,sql,sql-like,Java,Mysql,Sql,Sql Like,我正在构建一个应用程序,并尝试使用PreparedStatements来执行SQL查询。基本上,有一个搜索选项,我尝试在搜索框中使用类似SQL的方法。该名称取自搜索框,并插入到PreparedStatement中 试试看{ PreparedStatement ps2=con.prepareStatement(“从账簿名称为?且状态为?)的账簿中选择*”; ps2.设置字符串(1,名称2+“%”); ps2.设置管柱(2,静态); ResultSet rs=ps2.executeQuery();

我正在构建一个应用程序,并尝试使用PreparedStatements来执行SQL查询。基本上,有一个搜索选项,我尝试在搜索框中使用类似SQL的方法。该名称取自搜索框,并插入到PreparedStatement中

试试看{
PreparedStatement ps2=con.prepareStatement(“从账簿名称为?且状态为?)的账簿中选择*”;
ps2.设置字符串(1,名称2+“%”);
ps2.设置管柱(2,静态);
ResultSet rs=ps2.executeQuery();
dt.setRowCount(0);
while(rs.next()){
对象ob[]={
rs.getString(“书籍名称”),
rs.getString(“书籍作者”)
};
艾德罗医生(ob);
}
}捕获(异常af){
jLabel29.setText(“未找到结果!”);
}
打破
其中,name2是用户搜索的内容。但是,当我这样做时,程序仅在“book_name”列中的第一个单词与搜索项匹配时才给出输出。例如,对于一个句子“我的名字是杰克”,如果我键入“杰克”或“名称”,没有输出,但是如果我输入“我的”,整个行被检测到。

< P>它应该是代码>像'%%' >考虑所有通配符搜索的后续和后续字符。 换句话说,使用:

ps2.setString(1,“%”+name2+“%”);

类似于“xyz%”
的意思是“以
xyz
开头”。
%
用作通配符。所以像“%xyz%”这样的
将匹配任何包含
xyz的内容
我应该在PreparedStatement或pst.setString?ps2.setString(1,name2+“%”)中输入它;变为ps2.setString(1,“%”+name2+“%”);非常感谢拉维和马克的帮助。坐了一段时间后,我终于让它工作了xD