返回信息流最近在做一个关于音标的数据库系统,想要输入一个单词,然后在表中找出单词的音标,再把单个音标的口型图从另一张表中找出来输出。图片是直接存在数据库里面的。
现在遇到一个问题,每次输入单词,单词可以顺利找到音标(音标可以输出,里面的特殊字符也没问题),然后程序就结束了,图片没能存到指定的路径里。不报错,无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)也没问题,音标的各种特殊字符也能出来。
大家帮忙看看,到底应该怎么改呢?
这是一条镜像帖。来源:北邮人论坛 / java / #52163同步于 2016/8/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[MySQL&Java]关于Prepared Statement里String的查询处理
harrytao
2016/8/3镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
后面加了SQL和IO的exception,是不是少了点什么。。。
【 在 nuanyangyang 的大作中提到: 】
: 你有没有在try之后的catch里把错误隐藏了呢?
string里面就是单个读音的音标,因为长音会有冒号,d?或者t?这些要占两个字符,所以存成了string
【 在 a472770699 的大作中提到: 】
: 吃瓜,感觉没问题,编码或者String里面多打了个空格啥的?
【 在 harrytao 的大作中提到: 】
: 后面加了SQL和IO的exception,是不是少了点什么。。。
:
关键是catch了这些exception以后你做了什么?只是安静地继续吗?还是print stack trace?还是re-throw?
都print了。。
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (c != null)
try {
c.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
【 在 nuanyangyang 的大作中提到: 】
:
: 关键是catch了这些exception以后你做了什么?只是安静地继续吗?还是print stack trace?还是re-throw?
这……学学用java7的try-with-resources吧。
【 在 harrytao 的大作中提到: 】
: 都print了。。
: catch (Exception e) {
: e.printStackTrace();
: ...................
暖神能细说一下吗。。。
catch exception的代码基本都是网上找的。。。
所以代码可能的问题是怎样的?
多谢。。。
【 在 nuanyangyang 的大作中提到: 】
: 这……学学用java7的try-with-resources吧。
: