PreparedStatement中有很多方法,setBoolean,setBlob,setLong,setDate,setTimestamp...
还有setObject(int parameterIndex, Object x) 是不是这个setObject可以代替所有的其它set方法,这样不是很简便吗。那效率上有什么不同?
还有setObject(int parameterIndex, Object x, int targetSqlType)这个方法,我猜是不是不指定targetSqlType,jdbc会自动通过反射,得出类型

解决方案 »

  1.   

    我一直都只用setString 
      

  2.   

    setObject(int parameterIndex, Object x) 可以代替所有其他的,我自己写的数据库封装类就用这个,效率就算有影响,应该也可以忽略不计,仅仅是一次类型转换,这个需要多长时间么?就是有的时候,类型转换会报错,及时捕获错误就好了。
      

  3.   

    任何set方法都可以用setObject()方法代替
      

  4.   

    在需要使用setBlob的地方时,用setObject最方便,参数用byte[]就行
      

  5.   

    我向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再插入就没问题了