我在执行upadate查询时遇到问题,问题是我想在我的sqlite表中更新blob列,我注意到只存储了这个blob文件的路径。但是,使用带有绑定值的插入查询:pst.setBinaryStream(File);
它工作正常!
我使用以下代码获取我的blob文件:
File image=null;
URL photoURL = null;
try {
photoURL = new URL(addadh_adherent_photo_label.getText());
} catch (MalformedURLException ex) {
Logger.getLogger(ParametresController.class.getName()).log(Level.SEVERE, null, ex);
}
try {
image= new File( URLDecoder.decode( photoURL.getFile(), "UTF-8" ) );
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(ParametresController.class.getName()).log(Level.SEVERE, null, ex);
}
FileInputStream fis = null;
try {
fis = new FileInputStream(image);
} catch (FileNotFoundException ex) {
Logger.getLogger(ParametresController.class.getName()).log(Level.SEVERE, null, ex);
}
这是我的更新查询:
int AderentId =100;
String updateAderent=" UPDATE gss_aderent SET"
+ "ad_photo='"+image+"'
+ "WHERE ad_id='"+AderentId+"' ";
stmt.executeUpdate(updateAderent);
我的问题是:更新的值不是blob值而只是他的路径:(我的问题是如何在更新查询中存储(更新)blob值?是否存在绑定BinaryStream参数以进行更新查询的方法?can我在更新查询中使用preparedStatement?
答案 0 :(得分:0)
您的应用程序看起来像SQL Injection attacks
使用PreparedStatement和setBlob(int x, InputStream in)