我正在开发一个数据库,其中包含有关音标的数据。 当我使用准备好的语句来搜索这样的符号时:
String sql="select pic from picture where symbol=?";
PreparedStatement ps=null;
try{
ps=c.prepareStatement(sql);
ps.setString(1,str); //str is a symbol of a pronunciation
rs=ps.executeQuery();
while(rs.next()){
is=rs.getBinaryStream("pic");
ImageUtil.readBlob(is,"C:\\Users\\HarryTao\\Desktop\\1\\"+String.valueOf(i)+"(1).jpg");
}
}
程序运行时,数据库中存储的图片无法存储到我的电脑上,也没有出现错误或警告。
我尝试在 ps 中的问号前后添加 \"
但没有成功。
我不知道问题出在哪里。如果我更改 sql
字符串以按元素 id 进行搜索,则效果很好。
String sql="select front from picture where picture_id=?";
...
ps.setInt(1,1);
谁能告诉我我的字符串操作有什么问题吗?
最佳答案
Escape util方法会帮助你
enter code hereString sql="select pic from picture where symbol=?";
PreparedStatement ps=null;
try{
ps=c.prepareStatement(sql);
ps.setString(1,StringEscapeUtils.escapeSql(str)); //str is a symbol of a pronunciation
rs=ps.executeQuery();
while(rs.next()){
is=rs.getBinaryStream("pic");
ImageUtil.readBlob(is,"C:\\Users\\HarryTao\\Desktop\\1\\"+String.valueOf(i)+"(1).jpg");
}
}
关于java - 在准备好的语句中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38710432/