`

关于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()+" %' "); ------错误用法。注意,这里要忽略'%%' 旁边的''

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

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

分享到:
评论

相关推荐

    PreparedStatement 向数据库插入时间方法

    在java中向访问数据库的sql语句一般放到类PreparedStatement类构造函数中,这里遇到的问题就是向sql语句中用setDate()插入时间时不能用java.util.date,而应用java.sql.date,这里就讲述了解决方法,一种是插入...

    使用PreparedStatement访问数据库

     包含于PreparedStatement对象中的SQL语句具有一个或多个IN参数。IN参数的值在SQL语句创建时未被指定。该语句为每一个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在语句执行之前,通过适当的Setxxx...

    关于PreparedStatement插入Date类型值的方法.txt

    关于PreparedStatement插入Date类型值的方法.txt

    jsp分页技术及其对数据库两张表的增删查改和模糊查询

    数据库增删查改操作是指对数据库中数据的增添、删除、修改和查询操作。这些操作可以使用SQL语句来实现。在ContactDao类中,我们可以看到使用了PreparedStatement来执行SQL语句,实现了对数据库的增删查改操作。 ...

    Statement和PreparedStatement之间的区别

    在 Statement 对象中,如果用户输入的数据包含恶意代码,例如 Drop 表名,可能会导致数据库安全问题。而PreparedStatement对象则可以避免这种情况,因为它将用户输入的数据作为参数传入,而不是将其直接嵌入到SQL...

    数据库-数据库编码解决方案

    这个问题其实也很简单,因为PreparedStatement接口必须通过Connection接口来获取实例,而ResultSet接口又必须从Statement或者PreparedStatement接口来获取实例,有了这样的级联关系,问题也就迎刃而解了。...

    Java之JDBC连接MySQL数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement)

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬...

    用java程序怎么实现200ms往数据库中插入10000条数据

    在 Java 程序中,实现高效的数据库插入数据是非常重要的。以下是相关的知识点: 使用 JDBC 连接数据库 在 Java 程序中,使用 JDBC(Java Database Connectivity)连接数据库是非常常见的。JDBC 是一个 Java API,...

    JSP中的PreparedStatement对象操作数据库的使用教程

    主要介绍了JSP中的PreparedStatement对象操作数据库的使用教程,文中举了一些使用PreparedStatement预处理语句对象进行MySQL增删查改的例子,需要的朋友可以参考下

    java中PreparedStatement和Statement的区别

    Java 中 PreparedStatement 和 Statement 的区别 Java 中的 PreparedStatement 和 Statement 都是用于执行 SQL 语句的接口,但是它们之间存在一些关键的区别。 首先,从数据库执行 SQL 语句的角度来看,使用 ...

    PreparedStatement

    jdbc2.0版 PreparedStatement接口的用法

    如何获得PreparedStatement最终执行的sql语句

    NULL 博文链接:https://huiminchen.iteye.com/blog/1097332

    Java WEB访问数据库

    当显示声明的sql越少,那么潜在的sql语句的数据库依赖性就越小。 由于preparedstatement具备很多优点,开发者可能通常都使用它,只有在完全是因为性能原因或者是在一行sql语句中没有变量的时候才使用通常的...

    练习3:使用PreparedStatement插入宠物信息.zip

    练习3:使用PreparedStatement插入宠物信息.zip

    采用JDBC进行数据库分页查询

    一次只从数据库中查询最大maxCount条记录 * @param sql 传入的sql语句 * @param startNo 从哪一条记录开始 * @param maxCount 总共取多少条记录 */ public void getData(String sql,int startNo,int maxCount){ ...

    Java JSP Servlet数据库连接代码.rar

    Java JSP Servlet数据库连接代码,把数据库连接封装在Servlet中,可多次重复调用,另外更换数据库时候也很方便修改。//连接并查询数据库  String sqlStr="select * from users"; //SQL查询语句  Statement st=...

    上传图片,保存到数据库,jdbc操作blob

    在上面的代码中,我们使用了Connection和PreparedStatement对象来连接数据库和执行SQL语句。Connection对象用于建立数据库连接,而PreparedStatement对象用于执行参数化的SQL语句。PreparedStatement对象可以防止SQL...

    java-利用GUI实现窗口学生管理系统(jdbc连接数据库-MySQL)

    增删改查语句在数据库中运行成功 3).可以使用Statement语句或PreparedStatement语句 4).主函数,用于选择下一步要执行的操作 5).连接方法,连接数据库的4个属性 6).关闭连接 方法,断开数据库连接

    Java数据库编程宝典3

    15.2.2 从数据库中检索的数据作为XML文档 15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用...

Global site tag (gtag.js) - Google Analytics