【发布时间】:2013-08-20 09:30:57
【问题描述】:
我正在尝试将值动态传递给 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。
谁能告诉我我该怎么做?
谢谢。
【问题讨论】:
-
but I want to avoid this manual setting of the values为什么?如果您正在解析用户输入,则绝对应该使用准备好的语句。如果您不确定为什么,也许可以阅读 SQL 注入。
标签: java sql dynamic bytearray