2012-07-16 3 views
4

JSF2.0을 사용하여 webapplication을 만들고 있는데, mysql에서 데이터 유형을 MEDIUMBLOB으로 저장하고 있습니다.PreparedStatement를 사용하여 BLOB를 null로 설정하십시오.

값을 삽입하려면 다음과 같이 PreparedStatement를 사용하고 있습니다.

PreparedStatement psmnt = con.prepareStatement("INSERT INTO sketchesSG002003 (userid, imageTitle, imageData, drawingComments) VALUES (?,?,?,?)"); 
psmnt.setLong(1, personalInfoId); 
psmnt.setString(2, sketchesSG002003Title); 

try { 
    String fileName = FilenameUtils.getName(sketchesSG002003ImageUpload.getName()); 
    File image = new File(fileName); 
    InputStream fis = sketchesSG002003ImageUpload.getInputStream(); 
    psmnt.setBinaryStream(3, fis, (int) sketchesSG002003ImageUpload.getSize()); 
} catch (Exception e) { 
    psmnt.setBinaryStream(3, null); 
} 
psmnt.setString(4, sketchesSG002003Comments); 
i = psmnt.executeUpdate(); 

스택 트레이스의 일부가

javax.faces.el.EvaluationException: java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V 
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) 
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
at javax.faces.component.UICommand.broadcast(UICommand.java:315) 
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 

내가 위의 오류가 문이라고 생각하지만 내가

java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V 
으로 오류를 얻고있다 psmnt.setBinaryStream(3, null);

내 질문 할 수있는 방법입니다 이진 데이터를 Null 또는 Nothing으로 설정 했습니까?

+0

이 문제는 JSF 관련이 없습니다. 내가 아는 –

+0

그러나, 나는 그것을 포함하는 생각도 ... 아무것도 ... –

답변

5

요즘 뭐가 잘못 되었나요? 내가 그 기술을 사용했다 나는이 질문 :(

psmnt.setNull(3, java.sql.Types.BLOB);가 속임수를 썼는지 물어 후에 내가 솔루션을 얻을.

+0

이 경우 LongBlob과 정상 BLOB간에 차이가 있습니까? –

관련 문제