日期:2014-05-17  浏览次数:20753 次

jdbc中setObject方法是不是可以代替其它set方法
PreparedStatement中有很多方法,setBoolean,setBlob,setLong,setDate,setTimestamp...
还有setObject(int parameterIndex, Object x) 

是不是这个setObject可以代替所有的其它set方法,这样不是很简便吗。那效率上有什么不同?
还有setObject(int parameterIndex, Object x, int targetSqlType)这个方法,我猜是不是不指定targetSqlType,jdbc会自动通过反射,得出类型
------最佳解决方案--------------------
那样的话,估计会影响效率。如果不是频繁的操作没有问题,如果是频繁的操作,建议慎重
------其他解决方案--------------------
我一直都只用setString 

------其他解决方案--------------------
setObject(int parameterIndex, Object x) 可以代替所有其他的,我自己写的数据库封装类就用这个,效率就算有影响,应该也可以忽略不计,仅仅是一次类型转换,这个需要多长时间么?就是有的时候,类型转换会报错,及时捕获错误就好了。
------其他解决方案--------------------
任何set方法都可以用setObject()方法代替
------其他解决方案--------------------
有人在大型的项目总这么做吗
------其他解决方案--------------------
在需要使用setBlob的地方时,用setObject最方便,参数用byte[]就行
------其他解决方案--------------------
我向mysql数据库插入char类型的时候, 用setObject好像不行, 运行会报错: Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'grade' at row 1, 其中"grade"那些在数据库中是定义为char(1), 将数据先转为String再插入就没问题了