关于PreparedStatement中数据库like查询的小问题

数据库:MySQL

IDE:eclipse

查询表建立方法如下:

CREATE TABLE `student` (
  `id` int(10) NOT NULL auto_increment,
  `name` char(10) default NULL,
  `sex` char(10) default NULL,
  `age` int(10) default NULL,
  `password` char(20) character set utf8 default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

 

想用like模糊查询表中名字带有“小”的记录,查询语句如下:

SELECT id, name, sex, age FROM student WHERE name LIKE '%小%' AND sex LIKE '%%' AND age LIKE '%%';

其中like用法如下:

通配符说明示例

%

包含零个或多个字符的任意字符串。

WHERE name LIKE '%小%' 将查找在名字中任意位置包含汉字 "小" 的所有名字。

_(下划线)

任何单个字符。

WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。

[ ]

指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。

WHERE au_lname LIKE '[C-P]arsen' 将查找以 arsen 结尾并且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如 Carsen、Larsen、Karsen 等。

[^]

不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。

WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始并且其后的字母不为 l 的所有作者的姓氏。

在java中用PreparedStatement运用like查询:

private static final String SearchStudent =
    "SELECT id, name, sex, age FROM student WHERE name like ? and sex like ? and age like ?";

pstat = conn.prepareStatement(SearchStudent);

代码太占篇幅,只写部分。

pstat.setString(1, "%"+s.getName()+"%");---------正确用法。

pstat.setString(1, " '% "+s.getName()+" %' "); ------错误用法。注意,这里要忽略'%%' 旁边的''

这个单引号可能会让大家浪费点时间,这里在此稍微提下。

第一次写东西,谢谢指出错误。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当您使用Java编程语言连接数据库时,您可以使用JDBC(Java Database Connectivity)来执行含有LIKE的SQL查询。以下是一个示例代码: ```java import java.sql.*; public class DatabaseExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/database_name?useSSL=false"; String username = "your_username"; String password = "your_password"; try { Connection connection = DriverManager.getConnection(url, username, password); String keyword = "apple"; String query = "SELECT * FROM fruits WHERE name LIKE ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, "%" + keyword + "%"); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); // 其他列的处理 System.out.println("ID: " + id + ", Name: " + name); } resultSet.close(); statement.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上述代码,您需要替换`url`、`username`和`password`为您自己的数据库连接信息。在查询,我们使用了`PreparedStatement`来预编译SQL语句,并使用`setString`方法将关键字设置为查询参数。然后,我们执行查询并处理结果集的每一行。 请注意,这只是一个简单的示例,您需要根据自己的数据库和表结构进行适当的更改和扩展。同时,为了安全起见,建议使用参数化查询来防止SQL注入攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值