我尝试创建一个PreparedStatement:
stmt = conn.prepareStatement("SELECT POLBRP, POLTYP, POLNOP, INCPTP, TRMTHP, " +
"CLTKYP , CANDTP, POLSTP, EXPRYP, OINCPP, CANRNP, PAYMDP,
KCNFLP, KCRTSP, KACADP, KSCHMP, EXPRYP FROM "
+ POLHDR + " WHERE POLNOP = " + idNumber +
" AND POLBRP = " + branch + " AND POLTYP = " + product +
" AND OINCPP <= "+date );
这会引发 SQLException:[SQL0206] 列 AD 不在指定的表中。
我不知道它从哪里获取 AD 列,因为我从未在 select 子句中指定它(除非我完全盲目和愚蠢)
有人可以帮忙吗?
最佳答案
如果你的变量是字符串,例如分支
" AND POLBRP = " + branch + " ...
然后你忘了引用这些值
" AND POLBRP = '" + branch + "' ...
但真正的解决方案是使用占位符
... AND POLBRP = ? ...
这将一劳永逸地防止此类问题,这就是PreparedStatement的设计目的
关于java - SQLException : Column AD not in specified tables - column AD never specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606834/