2016-08-02 2 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' 열이 정의되고'에 대한 데이터 유형은 – Tibrogargan

+0

을 str' 방법 경우 심볼에 대한 데이터 유형 String (Text)이면 제공된 데이터를 아포스트로피로 묶어야합니다. String sql = "picture에서 그림 선택 where symbol = '"+? + " '"; – DevilsHnd

+0

catch 블록이 있습니까? 어쩌면 당신은 그냥 그것을 무시하고 일하는 것 같다지만 –

답변

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"); 
     } 
    } 
내가보고 싶은
관련 문제