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

誰でも私の文字列操作の問題を教えていただけますか?方法utilの

+0

と' str' – Tibrogargan

+0

のデータ型に役立ちます文字列(テキスト)の場合、付属のデータをアポストロフィで囲むようにしてください。String sql = "pictureからpictureを選択します。symbol = '" +? + "'"; – DevilsHnd

+0

キャッチブロックはありますか?たぶんあなたはそれを無視しているように見えるかもしれませんが、それは –

答えて

0

エスケープは、シンボルのデータ型場合

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"); 
     } 
    } 
私は `symbol`列が定義されている方法を見てみたいと思い