我在oracle数据库中插入一条记录,我从java bean中获取值。它就像这样::
insert into allergy (patient_id, allergy, reaction) values(seq_patient.nextval, '" + bean.getPatient_allergy() + "', '"+ bean.getReaction()+"')";
但过敏的值可能会产生撇号,导致sql失败并伴有ORA-00917:缺少逗号。有没有办法克服这个问题?
答案 0 :(得分:5)
使用参数化语句而不是将变量注入查询:
http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html
答案 1 :(得分:1)
最好使用bind variables而不是将查询构建为字符串。
那会照顾你的问题。它还会阻止SQL injection attacks(另请参阅Bobby Tables)。
以下是有关如何在Java中使用预准备语句和绑定变量的一些信息:link。
答案 2 :(得分:0)
如何使用参数化查询而不是组装INSERT
命令? Tha还会修复您当前的SQL Injection漏洞。