2016-08-02 72 views
0

我正在研究一个包含有关注音符号数据的数据库。 当我使用事先准备好的声明,以寻找这样的一个符号:准备好的语句中的搜索字符串

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); 

谁能告诉我我的字符串操作有什么问题吗?

+0

我想看到的'symbol'列是如何定义和'数据类型str' – Tibrogargan

+0

如果符号数据类型是字符串(文本),那么也许你应该尝试用撇号包含提供的数据:String sql =“从图片中选择图片其中symbol ='”+? +“'”; – DevilsHnd

+0

你有一个catch块吗?也许你只是忽略它,似乎什么似乎工作,但它不是 –

回答

0

逃生UTIL方法将帮助您

enter link description here

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"); 
     } 
    }