gpt4 book ai didi

java - 空字符串上的通配符

转载 作者:行者123 更新时间:2023-11-29 12:51:52 25 4
gpt4 key购买 nike

我正在为学校项目创建一个与 mysql 数据库交互的 Java 程序:当用户通过 GUI 点击搜索按钮时,我使用 java mysql 连接器执行以下查询:

public ResultSet getBooks(String book_id,String title,String author)
{
ResultSet rs = null;
try{
Statement stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT book_id,title,author_name,branch_id,no_of_copies FROM "
+ "(temp_author NATURAL JOIN book_copies) "
+ "WHERE book_id like '%"+book_id+"%' OR title like '%"+title+"%' OR author_name like '%"+author+"%';");

}
catch(SQLException ex) {
System.out.println("Error in connection: " + ex.getMessage());
}
return rs;
}

此查询的问题在于,如果任何字段(图书 ID、标题或作者)为空,则查询将返回 true 作为结果。所以我的问题是如何使用通配符搜索匹配的字符串,但当字符串(boook_id、title 或author)为空时返回空集。

谢谢。

PS:由于我的声誉较低,我无法发布 GUI 的图像。

最佳答案

假设您的 book_id String 不是 null,您可以这样:

WHERE ('"+book_id+"' <> '' AND book_id like '%"+book_id+"%') OR 
('"+title+"' <> '' AND title like '%"+title+"%') OR
('"+author_name+"' <> '' AND author_name like '%"+author+"%')

我建议您也使用准备好的语句(为了安全!)。

关于java - 空字符串上的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com