JavaFX,SQLite:如何在更新查询中设置BLOB值?

时间:2015-07-10 14:23:54

标签: java sqlite javafx sql-update blob

我在执行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?

1 个答案:

答案 0 :(得分:0)

您的应用程序看起来像SQL Injection attacks

使用PreparedStatement和setBlob(int x, InputStream in)