jdbc PreparedStatement接口中,提供了一系列方法用来设置 SQL参数。比如:
void setInt(int parameterIndex, int x);
void setString(int parameterIndex, String x);
void setObject(int parameterIndex, Object x);
既然,setObject(int parameterIndex, Object x)作为一个通用的方法,可以适配任何参数的设置,那么jdbc api中提供更具体的 类似setInt(int parameterIndex, int x)
的作用何在呢?
感谢解答!
如果你的SQL里需要的参数是一个数字类型的数字123,但是我传的是一个字符串abc,使用setObject的时候编译器会报错吗?并不会,因为什么类型的对象都可以往里填,同理传其他类型的对象也有可能会造成SQL异常,如果使用的是setInt()方法就会报错了,因为编译器知道这里必须传的是一个int类型的数值。在编写程序的时候能够发现的异常肯定比你运行这段代码发现异常后来修改的代价要来的小。
还有一点,假设全部用setObject()方法并且传了正确数值能正常运行代码,当你很久之后或者其他人重新看到了这段代码:
你还能记起来你当时是往SQL的这个位置传一个什么类型的参数吗?恐怕这个时候要去往前翻代码才能知道它具体是什么类型了,这给修改和搜索带来了麻烦。