无空格分隔占位符与WHERE关键字的JDBC SQL查询能否正常执行?
JDBC中SQL拼接无空格是否能正常执行?
不行,这种写法会触发SQL语法错误,必须调整才能正常运行。
你现在的代码拼接后,实际生成的SQL是这样的:
UPDATE SOME_TABLE SET MY_NAME=?,MY_FILE=?WHERE MY_ID = ?
这里的?WHERE是问题核心——SQL解析器没法把它拆成占位符?和关键字WHERE,会直接判定语法非法,执行时抛出异常。
不用逐个修改的话,最简单的办法是把拼接的WHERE子句字符串开头加个空格,比如改成" WHERE MY_ID = ?",这样拼接后就会生成正确的SQL:
UPDATE SOME_TABLE SET MY_NAME=?,MY_FILE=? WHERE MY_ID = ?
如果多处都有这类问题,建议统一规范SQL字符串拼接的习惯:后续子句(比如WHERE、AND、OR这些)的拼接字符串开头都带空格,从根源避免这类低级错误。
内容的提问来源于stack exchange,提问作者rudraksha raikar
相关产品推荐
相关产品推荐

