Java 使用LIKE和%s从MySQL获取记录
我有一个名为Java 使用LIKE和%s从MySQL获取记录,java,mysql,servlets,Java,Mysql,Servlets,我有一个名为mpi的表,它包含23列。我已经为每个列引入了带有按钮的搜索字段,用户可以在其中输入查询以使用查询获取记录 query="select * from mpi where Genus ='"+genus+"' 现在我想通过使用之类的%%来获取记录,但它不起作用,也不提供任何记录,但如果键入全名,它工作得很好。这是密码 String uname=request.getParameter("uname"); String full="%"+uname+"%"; dbconn=new
mpi
的表,它包含23列。我已经为每个列引入了带有按钮的搜索字段,用户可以在其中输入查询以使用查询获取记录
query="select * from mpi where Genus ='"+genus+"'
现在我想通过使用之类的%%
来获取记录,但它不起作用,也不提供任何记录,但如果键入全名,它工作得很好。这是密码
String uname=request.getParameter("uname");
String full="%"+uname+"%";
dbconn=new DatabaseConnection();
conn=dbconn.setConnection();
pstmt=conn.prepareStatement("select * from mpi where Genus LIKE ?");
pstmt.setString(1, full);
res=pstmt.executeQuery
有谁能告诉我错误在哪里,为什么我在使用半个关键字(如%keyword%)时没有得到记录。它可以工作(除了缺少的括号),并且使用准备好的语句的方法是完全正确的
然而,我看到过一些类似的代码片段,问题总是在于变量混淆或不关闭,或者简单的疏忽。最好宣布尽可能接近
try (ResultSet res = pstmt.executeQuery()) {
while (res.next()) {
..
}
} // Automatically closes res.
请正确处理pstmt的生命周期,并关闭。向我们展示实际编译的真实代码。为什么您的select语句要从不同的表中选择,而不是您在问题文本中描述的要从中获取数据的表?