将动态值传递给java中的二进制流查询

时间:2013-08-18 12:58:18

标签: java sql dynamic bytearray

我正在尝试将值动态传递给PreparedStatement并在DB中插入记录,如下所示,我可以按照以下方式执行操作。

String fName="AA"; // this value changes
String lName="BB"  //this value changes 
String query="insert into person(first_name,last_name) values ('"+fName+"','"+lName+"')"
PreparedStatement ps= null;
ps== connection.prepareStatement(query); 
ps.executeUpdate();

但我有byteArray []我转换为ByteArrayInputStream ..这个值我不能像上面那样动态传递,比如fName和lName,我的第三张colum照片是Blob。

但如果我喜欢,

byte[] b =somebytesss...
ByteArrayInputStream bin=new ByteArrayInputStream(b);
String query="insert into person(first_name,last_name,photo) values (?,?,?)"
PreparedStatement ps= null;
ps.setString(1,"AA");
ps.setString(2,"BB");
ps.setBinaryStream(3,bin,bin.available());
ps== connection.prepareStatement(query); 
ps.executeUpdate();   

这也有效。

但我想避免手动设置值。 我只是想像我的第一个案例一样将动态查询传递给bytearray []的preparestatement。

任何人都可以告诉我如何做到这一点吗?

感谢。

1 个答案:

答案 0 :(得分:0)

实际上第二个例子,创建带参数的预准备语句是首选方法。它可以保护您免受SQL注入。你应该保持这种方式。