mysql使用参数化查询,like模糊查询,应如何拼接字符串

好奇是学习的源动力:因为在群里潜水看到关注sql注入的讨论,尝试在自己程序的搜索框输入单引号,程序报错,开始尝试修改为参数化查询,噩梦开始了。。

搬出了毕业时写的DBHelper(很早写的使用参数化查询的操作类),替换掉程序中为了方便精简(姑且这么说吧)的DBHelper。

开始安装平常的逻辑拼接:sql += " where t.realName like '%?realName%'";//失败了,无论如何都查不出来数据。

失败原因:据说是因为'' 引号包裹了?realName,程序认为这是个字符串,不是关键字,不进行解析了。

此后我又试了类似这样的格式,各种拼接方式,

如:sql += " where t.realName like '%"+"?realName"+"%'";//想要将?realName作为参数,来让程序识别,基础不牢的弊病有暴露了,被高手指出,这明明就是拼接字符串嘛,羞愧难当。

继续请教,得出如下:sql += " where t.realName like '%'+?realName + '%'";//抛出异常,还是不行。

然后我想换一种方式,借着以前高手的思路:如果两表之间没有关系,就创造关系。//这句话对我影响很大,受益匪浅。 当时是mssql,有2,4,5,16这样的数据格式,这些数字都是另外一张表的标识列,使用charindex来进行关联。跑题了-------

我经过google查询,使用了如下sql:sql += " where instr(t.realName,?realName)>0";//能正常查询了,又有点担心某位大神说的,查询使用函数,会造成无法使用索引,造成性能下降,担忧。。

午饭后:基友Alex写来一份Sql语句,尝试下,如下:sql += " where t.realName like concat(?realName,'%')";//查询成功,这个是mysql中特有的拼接字符串的方式,着实让我蛋疼。。。题外篇:mssql是用+号拼接,oracle是用||拼接,mysql就是concat(var1,var2,.....)拼接

总结:1,虽然在前几天帮助同事用concat函数搞定了一个查询,但是到自己使用,却头脑不灵光,惭愧。

2,在毕业时,还整天写参数化查询,工作了却不断找寻偷懒的方法,人变坏了。

3,基础不牢,早晚有一天要补的,我就吃亏了。

4,关于查询中使用函数是否会造成索引失效,有待高手回答。

5,mysql中有个全文检索,貌似是鸡肋。

java mysql 参数化_JavaMySQL中like的参数化查询相关推荐

  1. 审计MySQL 8.0中的分类数据查询

    面临的挑战 通常,涉及到敏感信息时用户需要使用审计日志.不仅仅是在表上运行Select,还包括访问表中的特定单元格.通常,这类数据将包含一个分类级别作为行的一部分,定义如何处理.审计等策略. 诸如此类 ...

  2. java 行为参数化_Java中的行为参数化

    java 行为参数化 The past isn't here anymore, the future cannot be seen and the only thing permanent is th ...

  3. python参数化_Python 中如何实现参数化测试的方法示例

    之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文想针对测试中一种很常见的测试场景,即参 ...

  4. java mysql 变量_mysql中的变量

    一.系统变量 1. 查看所有系统变量 show variables; 2. 查看变量值 select @@变量名; -- 任何一个有数据返回的内容都是由select来查看 3. 修改变量 会话级修改: ...

  5. JAVA MYSQL从数据库中提取图片_java web将图片存到储数据库和从数据库中读取图片...

    (Notice:以下所有经验也是我根据网上的经验整理的,如有侵权可以联系我删除,Wx:IT_Ezra,QQ 654303408. 有问题讨论也可联系我,QQ同上.) 一.分析一下基本流程 从前台页面获 ...

  6. mysql where in 中多个参数查询

    mysql查询语句where条件in 正常情况需要查询的语句: select *from temp where id in ('1','2','3','4','5') 在实际过程中发现一直查不出数据, ...

  7. web获取多行mysql结果_mysql中的多行查询结果合并成一个

    SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 ...

  8. MyBatis中使用流式查询避免数据量过大导致OOM

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天mybatis查询数据库中大量的数据,程序抛出: java.lang.OutOfMemoryError: Java heap s ...

  9. junit 参数化测试用例_JUnit:在参数化测试中命名单个测试用例

    junit 参数化测试用例 几年前,我写了有关JUnit参数化测试的文章 . 我不喜欢它们的一件事是JUnit使用数字命名了单个测试用例,因此,如果它们失败,您将不知道是哪个测试参数导致了失败. 以下 ...

最新文章

  1. 基于OpenCV的图像分割处理!
  2. 转: 学ppt的网址与素材
  3. Codeforces Round #499 (Div. 2) Problem-A-Stages(水题纠错)
  4. Google colab基本页面layout和需要注意的地方!
  5. MFC 蜂鸣声或播放音频
  6. 搭建亿级时间线数据的监控系统,我有绝招!
  7. leetcode第21题: 合并两个有序链表
  8. SQL Server差异备份的备份/还原原理
  9. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
  10. nextpolish安装_希望组自主三代组装软件NextDenovo最新版本全球学术开源!
  11. 发现三个很赞的英语学习网站
  12. [C#][SAMPLE][CODE][Control]RadioBox、CheckBox和Validating事件的相关处理
  13. linux系统看实际内存剩余,linux怎么看内存剩余
  14. 2021-02-18docker
  15. Android实现电子邮箱客户端
  16. HTML制作水波纹,怎样制作水波纹
  17. Mac电脑如何调整鼠标光标大小?
  18. python numpy库 一些统计量计算
  19. Spring boot 日志分档基于log4j2.yml 配置文件
  20. python爬虫模块排名_Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析

热门文章

  1. 数电实验6:可控分频器设计
  2. Android修改百度地图的显示范围的大小
  3. Scrach优秀的58个作品
  4. SAP-MM-收发货与移动类型(个人笔记)
  5. gdft补液_目标导向液体容量治疗及进展.ppt
  6. 英语单词2022年9月2日
  7. 调试Release模式下遇到的问题 - Debug和Release的差异。
  8. GPS位置模拟-安卓
  9. ubuntu20.04安装之后之桌面美化(改ubuntu界面类win、dock风格等)
  10. python语言应用 智慧树满分章节测试答案_2020知到答案 Python语言应用 最新智慧树满分章节测试答案...