1、escape只能对指定符号后的第一位进行不转义处理
当你的语句是like ‘\%%’ escape ‘\\’ 的话第二个%还是会被当成多字符匹配的特殊字符,只有当like ‘\%\%’ escape ‘\\’ 时才能达到查询用两个%号的数据。
2、基于1条件,我们在代码里就需要对所有特殊字符进行一个replace的操作,给所有特殊字符前加\\,
be like:string1.replace("%","\\%").replace("/","\\/").replace("\\","\\\\")
看起来好像没问题了,但其实这里隐藏了replace的坑,当string1为%号时,实际输出是’\\%’,看起来好像没问题,其实是错的,我们要的是’\%’,为什么会多一个呢?要注意,第一个replace返回的数值里带了一个转义后的\也就是\\,这个\在第三个replace再一次被转移,就叠多了一层buff,跟我们想要的不一样,当你检查日志,从日志打印的sql入手,直接把sql语句拷贝出来执行,却又发现结果是正确的,其实是因为我们看到的’\\%‘里的\已经被转义了,实际上在库里执行的是’\\\\%’,结果当然不对。
正确的语句应该是string1.replace("\\","\\\\").replace("%","\\%").replace("/","\\/")
用replace要注意先后顺序,后者不要再去替换前者替换后的字符。


像个绕口令,但我也确实被绕进去了害。

java使用mysql的escape遇到的坑相关推荐

  1. mysql8 index255_详解关于MySQL 8.0走过的坑

    今天手贱更新了MySQL 8.0 第一个问题:Navicat连接不上数据库 安装的mysql为localhost:3306,配置一切默认,安装后打开Navicat 12 新建连接,直接报错 authe ...

  2. JAVA 访问MySQL数据库(使用方法及测试)

    最近我们的JAVA课程讲到数据库,老师一直强调搭建数据库环境(JDBC)的重要性,刚好我的电脑前段时间重装过,也可以趁着这个机会再来回顾一遍JDBC的搭建. 说明:本文使用的JDBC框架是基于JAVA ...

  3. 基于Java+Swing+Mysql实现旅游管理信息系统

    基于Java+Swing+Mysql实现旅游管理信息系统 一.系统介绍 二.功能展示 1.登陆 2.注册 3.旅游信息查询 4.查看游行团信息 5.报名 6.报名信息管理 三.数据库 四.其它 1.其 ...

  4. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  5. java linux mysql数据库_Linux Java连接MySQL数据库

    Linux(Ubuntu平台)Java通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 解压 jdbc: tar -zxvf mysql-connector-java-5.1.1 ...

  6. 【Java】Java连接Mysql数据库的demo示例

    [Java]Java连接Mysql数据库的demo示例 1.安装mysql数据库 2.下载java-mysql-connector.jar包 3.完成java配置 4.写java代码运行测试 1.安装 ...

  7. java 连接mysql 8.0,java连接mysql 8.0的问题

    mysql 8.0 是现在较新的版本,所以很多项目都开始用户mysql 8,在使用java连接mysql 8的时候,很多人想当然觉得需要使用新的连接驱动程序,比如mysql-connector-jav ...

  8. Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)

    1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...

  9. c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  10. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

最新文章

  1. 2018 区块链技术及应用峰会(BTA)·中国全日程新鲜出炉,更多精彩议题看不停
  2. 山东大学微生物国家重点实验室刘双江组招聘(肠道微生物方向)
  3. android免root兼容所有版本ui调试工具
  4. editplus sn
  5. UNIX 环境高级编程 文件和目录
  6. 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和
  7. SpringBoot AOP拦截器
  8. vb.net datagridview数据批量导入sql_导入:Java实现大批量数据导入导出(100W以上)
  9. [Translation]《击鼓》
  10. linux用什么剪辑视频教程,Linux 上的开源视频剪辑软件Olive
  11. html之CSS设计(四种引入方式、各种选择器)
  12. 在硅谷谈AI不够有创意,到苹果开吐槽大会 | 跟着李开复去硅谷
  13. Linux进阶之进程与线程
  14. Linux服务-搭建NFS
  15. Webpack框架知识整理——Modules
  16. JavaWeb文件上传(1)--基础
  17. 【Unity】游戏开发过程中的前后台切换技术
  18. 2012服务器系统有什么版本的,Windows server 2012操作系统有哪几个版本
  19. SAP中不同质检类型对收货的影响的现实案例分析
  20. 磁条卡磁道笔记(2)

热门文章

  1. 蓝桥训练系统 矩阵乘法
  2. 微信小程序用RSA加密和java后台对接。
  3. IOS 获取.plist文件的数据
  4. 触屏touch事件记录
  5. Red Hat TimesTen安装记录
  6. 吴昊品命令行解释程序 Round 2 —— 一个带括号的四则运算表达式的解释器(逆波兰式RPN)...
  7. PSQL容器带脚本初始化
  8. MySQL主从同步(五)——排错思路
  9. IS-IS详解(十一)——IS-IS 区域间防路由环路和次优路径
  10. L2TP 配置实例——Client-Initiated