关于模糊查询和插入数据乱码问题
Posted 普通网友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于模糊查询和插入数据乱码问题相关的知识,希望对你有一定的参考价值。
碰到了模糊查询的问题;因为我查询的关键字是中文,导致刚开始出现了很多问题;ResultSet rs-> 比如: select * from book where bookName = ‘操作系统‘;明明这条语句是可以在mysql数据库中查到的,但是 rs.next()却始终未false;这很奇怪,我唯一能想到的原因就是中文乱码问题;果然经过查阅资料;找到了解决方法;
就是你在写URL时要加上编码的格式: ->this.URL = "jdbc:mysql://localhost:3306/bookshopping?characterEncoding=utf8"; 这个URL就是 ct = DriverManager.getConnection(URL, USER, PASSWORD);相信不用我多说.这样就可以正常的使用中文查询语句了;
2.解决模糊查询的问题;
模糊查询语句一般为:select * from book where bookName like ‘%操作系统%‘;但是如果真的这样写的话,是绝对查不出来的,而且会报错(具体报错的内容我就不说明了);那么解决方式就是:使用通配符?
select * from book where bookName like ?;
然后使用prepareStatement 的setString方法;
比如:
String str = "操作系统";
ps.setString(1,"%" + str +"%");就可以解决了
不使用通配符情况下 在查询的时候可以这样写
String sql="delete from prep where id='"+id+"'";
String sql = "select * from trave where flag='热点线路' order by id desc";
今天早上很早就起床了,就一直在改通配符的问题,结果换数据库连接方式,又改通配符,转义字符,等等。还是不起作用,
最终我发现
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_jzggl?useUnicode=true&characterEncoding=UTF-8", "root", "root");
这样写有时候也会报错,导致编码有问题,乱码
如果遇到这种问题,这样不行,那就采用下面这种方式
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_jzggl?characterEncoding=UTF-8", "root", "root");
这样就可以了
与50位技术专家面对面 20年技术见证,附赠技术全景图
以上是关于关于模糊查询和插入数据乱码问题的主要内容,如果未能解决你的问题,请参考以下文章
02 - Unit08:搜索笔记功能搜索分页处理插入数据库乱码问题
安卓+servlet+MySql 查询+插入(汉字乱码解决)