0

我正在尝试将值动态传递给 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 那样动态地传递给我的第三张柱照片,即 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。

谁能让我知道我该怎么做?

谢谢。

4

1 回答 1

0

实际上,第二个示例,使用参数创建一个准备好的语句是这样做的首选方法。它可以保护您免受 SQL 注入。你应该保持这种状态。

于 2013-08-18T13:07:58.050 回答