BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #10259同步于 2016/8/3
Database机器人发帖

[MySQL&Java]关于Prepared Statement里String的查询处理

harrytao
2016/8/3镜像同步0 回复
最近在做一个关于音标的数据库系统,想要输入一个单词,然后在表中找出单词的音标,再把单个音标的口型图从另一张表中找出来输出。图片是直接存在数据库里面的。 现在遇到一个问题,每次输入单词,单词可以顺利找到音标(音标可以输出,里面的特殊字符也没问题),然后程序就结束了,图片没能存到指定的路径里。不报错,无exception。 出问题的代码是这一段: String sql="select front from picture where symbol=?"; PreparedStatement ps=null; try{ ps=c.prepareStatement(sql); ps.setString(1,str); //str是要查找的音标,在mysql里是varchar格式,这里是String rs=ps.executeQuery(); while(rs.next()){ is=rs.getBinaryStream("front"); ImageUtil.readBlob(is,"C:\\Users\\HarryTao\\Desktop\\1\\"+String.valueOf(i)+"(1).jpg"); } } 应该是 ps.setString(1,str);这一句有问题。程序运行不报错无exception,也出不了图片。 搜了搜问题,我把这句改成ps.setString(1,StringEscapeUtils.escapeSql(str));还是一样。 在String sql="select front from picture where symbol=?";的问号前后加\"或者\'也没用。 我确定是这里的问题,是因为把sql字符串改成按表里面的编号(int)去搜索就没问题,可以输出图片。就像下面这样: String sql="select front from picture where picture_id=?"; ... ps.setInt(1,i); 不输出图片,只输出单个的音标(第一段代码里的str)也没问题,音标的各种特殊字符也能出来。 大家帮忙看看,到底应该怎么改呢?
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。