java使用Access数据库中通配符的一些坑

java使用Access数据库中通配符的一些坑

在使用access数据库写一个条件为like的语句:
select mess_id ,mess_name,mess_note,mess_txt from messtable where 1=1 and mess_name like ‘*美*’
意思是查询mess_name中包含‘美’字的数据,因为access中*号代表任意个字符,这个其他数据库用%不太一样,在access中测试通过,然后我写了如下语句想

    StringBuilder sql=new StringBuilder("select mess_id ,mess_name,mess_note,mess_txt from messtable where 1=1 mess_name like ?");

然后用给占位符赋值PreparedStatement.setString(1,”*美*”);这个时候一直无法得到预期结果,然后开始百度,发现有人说在C#里access*通配符不起作用,要改成%,我想是不是java也是这样的?然后改成%%,然后奇迹般的就好了,具体原因没有找到,记录在这里,方便其他人。第一次写博客,好多功能不会用,就这样吧,另外说下我连接access用的是ucanaccess这个包,依赖如下

maven 依赖地址

  <dependency>
  <groupId>net.sf.ucanaccess</groupId>
  <artifactId>ucanaccess</artifactId>
  <version>4.0.4</version>    
  </dependency>

猜你喜欢

转载自blog.csdn.net/z357904947/article/details/82352708