我想更新或覆盖我的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的代码。
答案 0 :(得分:0)
明确使用PreparedStatement
API,在使用SQL
和placeholders
'创建参数后设置参数?'。在动态创建具有动态参数的查询时,请不要使用连接运算符。
这不起作用
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);
希望这有帮助!