如何用Java覆盖BLOB FILE

时间:2014-01-17 15:32:11

标签: java sqlite netbeans blob

我想更新或覆盖我的blob文件,我的数据库中有图片字段我只能添加图片但我无法更新它。

以下是我更新字段的代码:

 try{

        String value1=txtID.getText();
        String value2=txtFirst.getText();
        String value3=txtLast.getText();
        String value4=txtUser.getText();
        String value5=txtPass.getText();
        Object value6=cmbType.getSelectedItem();
        Object value7=cmbStatus.getSelectedItem();
        String value8=txtEmail.getText();

        String sql="Update Account SET ID='"+value1+"', Fname='"+value2+"', Lname='"+value3+"',Email='"+value8+"', Username='"+value4+"', "
        + "Password='"+value5+"',Type='"+value6+"',Status='"+value7+"' WHERE ID='"+value1+"' ";

        pst=conn.prepareStatement(sql);

        int updateCount = pst.executeUpdate();

        JOptionPane.showMessageDialog(null,"Data has been Updated");

    }

    catch(SQLException e){
        JOptionPane.showMessageDialog(null,e);
    }

    finally{
        try{
            rs.close();
            pst.close();

        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null,e);
        }
    }
    }

有人可以建议更新或覆盖blobfile的代码。

1 个答案:

答案 0 :(得分:0)

明确使用PreparedStatement API,在使用SQLplaceholders'创建参数后设置参数?'。在动态创建具有动态参数的查询时,请不要使用连接运算符。

这不起作用

    String sql="Update Account SET ID='"+value1+"',
    Fname='"+value2+"', Lname='"+value3+"',Email='"
    +value8+"', Username='"+value4+"', "+ "Password='"
    +value5+"',Type='"+value6+"',Status='"+value7+"'
     WHERE ID='"+value1+"' ";

您在上面的Object字符串中连接SQL类型的变量。这不公平。

这种方式是

String sql = String sql="Update Account SET ID=?, Fname=?, Lname=?,Email=?, Username=?,  Password=?,Type=?,Status=? WHERE ID=? ";
PreparedStatement pstmt = con.preparedStatement(sql);
//set all the values one by one by calling the appropriate
//setter methods based on field type
pstmt.setString(1,value1);
....
....
//Set the Blob to be updated
pstmt.setBlob(BLOB_INDEX,BLOB_OBJ);

希望这有帮助!