求助,java使用PreparedStatement 查询时,通配符%无效

浴漱淋沨 2018-06-04 10:44:54
当使用代码如下:

输入000,按下回车:
会弹出窗口:
当使用代码:
输入000,按下回车:
控制台显示:
这个种情况怎么办呢?各位大佬帮帮忙啊。我试过


也是不行。
...全文
1106 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
浴漱淋沨 2018-06-04
  • 打赏
  • 举报
回复
String sql = "SELECT * from goods";
pstat=con.prepareStatement(sql);
rs = pstat.executeQuery();
可以了
浴漱淋沨 2018-06-04
  • 打赏
  • 举报
回复
String sql = "SELECT * FORM goods";
			pstat=con.prepareStatement(sql);
			rs = pstat.executeQuery();
这样也不行
浴漱淋沨 2018-06-04
  • 打赏
  • 举报
回复
我是在stat的sql语句上改的,sql字段应该都没问题,不知道怎么到了pstat就不行了。
oyljerry 2018-06-04
  • 打赏
  • 举报
回复

PreparedStatement pstmt = con.prepareStatement(
    "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1,  "%" + notes + "%");`
就是这样就可以。先看看sql字段等都对了。
浴漱淋沨 2018-06-04
  • 打赏
  • 举报
回复
如果不使用like而是使用=
			  String sql = "SELECT * from goods where GoodsID = ? or GoodsName = ?";
// String sql = "SELECT * from goods where GoodsID like ? or GoodsName like ?";
//String sql = "SELECT * from goods where GoodsID like '%000%' or GoodsName like '%000%'";
//String sql = "select * from goods where GoodsId like concat('%',?,'%') or GoodsName like concat('%',?,'%')";
pstat=con.prepareStatement(sql);
// pstat.setString(1, "%"+Sname+"%");
// pstat.setString(2, "%"+Sname+"%");
pstat.setString(1, Sname);
pstat.setString(2, Sname);
rs = pstat.executeQuery();
System.out.println(Sname);

分别输入No00000001和330ml 可口可乐(听)结果是:



而使用like就不行了

浴漱淋沨 2018-06-04
  • 打赏
  • 举报
回复
			String sql = "SELECT * from goods where GoodsID like '%000%' or GoodsName like '%000%'";
//String sql = "select * from goods where GoodsId like concat('%',?,'%') or GoodsName like concat('%',?,'%')";
pstat=con.prepareStatement(sql);
//pstat.setString(1, Sname);
//pstat.setString(2, Sname);
rs = pstat.executeQuery();
System.out.println(Sname);
System.out.println(rs.next());

结果是:

—————————————————————————————————————————————————————————————————————
			  String sql = "SELECT * from goods where GoodsID like ? or GoodsName like ?";
//String sql = "SELECT * from goods where GoodsID like '%000%' or GoodsName like '%000%'";
//String sql = "select * from goods where GoodsId like concat('%',?,'%') or GoodsName like concat('%',?,'%')";
pstat=con.prepareStatement(sql);
pstat.setString(1, "%"+Sname+"%");
pstat.setString(2, "%"+Sname+"%");
//pstat.setString(1, Sname);
//pstat.setString(2, Sname);
rs = pstat.executeQuery();
System.out.println(Sname);
System.out.println(rs.next());


结果是:


浴漱淋沨 2018-06-04
  • 打赏
  • 举报
回复
引用 5 楼 sinat_37729323 的回复:
select * from goods where GoodsId like concat('%',Sname,'%') or Goodsname like concat('%',Sname,'%')

			String sql = "select * from goods where GoodsId like concat('%',?,'%') or  GoodsName like concat('%',?,'%')";
pstat=con.prepareStatement(sql);
pstat.setString(1, Sname);
pstat.setString(2, Sname);
rs = pstat.executeQuery();
System.out.println(Sname);
System.out.println(rs.next());

结果是:
控制台Sname是0,rs.next();返回false。


另外在sql server里是:
hr_hin 2018-06-04
  • 打赏
  • 举报
回复
select * from goods where GoodsId like concat('%',Sname,'%') or Goodsname like concat('%',Sname,'%')

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧