And*_*i N 6 java prepared-statement
我使用像这样的查询
"UPDATE MAILSCH.MESSAGE "
+ "SET IDFOLDER=?, SUBJECT=?, CONTENT=?, CREATIONTIME=?, AD_FROM=?, AD_TO=?, STATUS=? "
+ "WHERE IDMESSAGE=?";
Run Code Online (Sandbox Code Playgroud)
我可以在不更改查询的情况下错过IDFOLDER吗?
不幸的是没有。位置参数(“?”)正是如此,通过它们在查询中的位置或出现顺序来标识。如果删除“IDFOLDER=?”,则将为查询的其余部分分配错误的参数,并且可能会出现异常,因为分配的参数数量与查询中预期的数量不匹配。
我假设您无法更改源代码,因为这是最简单的途径 - 更改 SQL,然后更改 JDBC 参数以匹配。如果需要使用相同数量的参数,则可以以不更改 IDFOLDER 值但使用第一个参数的方式编写查询。
SET IDFOLDER=CASE ISNULL(?) WHEN 0 THEN IDFOLDER ELSE IDFOLDER END
Run Code Online (Sandbox Code Playgroud)
如果您的 JDBC 驱动程序支持命名参数,这可能会为您提供更简洁的替代方案。
| 归档时间: |
|
| 查看次数: |
2473 次 |
| 最近记录: |