关于模糊查询和插入数据乱码问题

碰到了模糊查询的问题;因为我查询的关键字是中文,导致刚开始出现了很多问题;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");

这样就可以了

关于模糊查询和插入数据乱码问题