簡體   English   中英

如何在Java中覆蓋BLOB文件

[英]How to Overwrite BLOB FILE in Java

我想更新或覆蓋我的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);
        }
    }
    }

有人可以建議用於更新或覆蓋Blob文件的代碼。

在使用帶placeholders “?”的SQL創建參數后,明智地使用PreparedStatement API設置參數。 動態創建帶有動態參數的查詢時,請不要使用串聯運算符。

這行不通

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

您正在上述SQL字符串中連接Object類型的變量,這是不公平的。

這種方式要走

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);

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM