我正在尝试将值动态传递给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。
任何人都可以告诉我如何做到这一点吗?
感谢。
答案 0 :(得分:0)
实际上第二个例子,创建带参数的预准备语句是首选方法。它可以保护您免受SQL注入。你应该保持这种方式。