Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 使用LIKE和%s从MySQL获取记录_Java_Mysql_Servlets - Fatal编程技术网

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语句要从不同的表中选择,而不是您在问题文本中描述的要从中获取数据的表?