2016-08-02 33 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"); 
     } 
    }