我正在使用JDBC模板(SPRING)来编写JDBC。在运行期间,我的所有变量值(绑定变量)都保存为字符串(对其实际类型有一些识别:bigint \ varchar等)。 当我使用setObject时,我不确定是否需要将变量值强制转换为真实类型,或者我可以将变量作为字符串发送到setObject,数据库将根据数据库中的列名将其转换(即如果它与BigInt进行比较,那么它会将字符串转换为big int然后查询等等。)
谢谢,
答案 0 :(得分:1)
如果我正确理解您的问题,那么我认为您不能使用setObject传递将转换为非String SQL类型的字符串(int,bigint)。
看看this question。以下是该问题的答案。
setObject的工作不是确定正确的转换 列类型。 setObject javadoc说:“JDBC规范 指定从Java对象类型到SQL类型的标准映射。该 给定的参数将被转换为之前的相应SQL类型 被发送到数据库。“所以它只是看Java类型 传递给它的对象并将其转换为SQL类型。所以你通过它 一个String,它将它转换为适当的varchar。如果你 希望setObject转换为其他类型,这就是原因 用于获取目标sql类型的附加setObject变体 转换为,但这对你不知道什么的情况没有帮助 目标类型是。