我正试图在我的项目
的某个地方用Java执行这段代码INSERT INTO registered_user (user_image,user_Email,phone_No,pin)
VALUES ('"+blob+"','"+reqData.getEmail()+"' ,'"+reqData.getPhoneNo()+"','"+reqData.getPin()+"')
我将blob声明为
byte[] b=(rqData.getUserImage());// getter method and has length of 6439==>b.length
Blob blob=blob=new SerialBlob(b);
reqData.getUserImage是(POJO类)
byte[] userImage;
public byte[] getUserImage() {
return userImage;
}
public void setUserImage(byte[] userImage) {
this.userImage = userImage;
}
此外,其他人是吸气者,我正在获得价值
但是我在执行时发表了这个声明
INSERT INTO registered_user (user_image,user_Email,phone_No,pin)
VALUES ('javax.sql.rowset.serial.SerialBlob@4dad2f','clientcode17@example.com' ,'null',
'123456789')
我的问题是关于查询中的第一个值。我在数据库中将user_image列声明为Blob,这里我也发送了blob数据但它是一个对象。 Blob,在我的情况下blob的长度为6439,但在数据库中它只保存30-32个字节。如何将数据库中的字节保存为Blob是什么问题。
提前致谢。
答案 0 :(得分:2)
这行代码将blob对象转换为字符串:
insert into registered_user (user_image,user_Email,phone_No,pin) values ('"+blob+"','"+reqData.getEmail()+"' ,'"+reqData.getPhoneNo()+"','"+reqData.getPin()+"')
您需要更改插入代码以使用预准备语句:
String query = "insert into registered_user (user_image,user_Email,phone_No,pin) values (?,?,?,?)";
PreparedStatement statement = con.prepareStatement(query);
statement.setBlob(1, blob);
//continue setting parameters
此处的完整示例 - http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html