一个PreparedStatement对象由一个带有问号?的SQL语句构建,对PreparedStatement对象参数赋值就相当于用值替换SQL语句中的?,最后形成一个完整的SQL。
我的疑问是,PreparedStatement可以通过setDate、setBlob、setTime等方法替换?的值,可是Date、Blob、Time都是一个对象啊,怎么与String的SQL拼接啊?不是setString就够了吗?不懂的说,不要拍我。

解决方案 »

  1.   

    JVM自己会进行处理的,你和数据库打交道,不仅仅是字符类型的
      

  2.   

    但是最终PreparedStatement对象提交给数据库的应该还是一条条的sql语句吧,只是它是提前编译好,知道这条sql是哪种类型的。setDate与我自己setString的效果有什么不同?
      

  3.   

    不一样啊,数据和语句不是同步的,先传SQL结构,再传具体数据
      

  4.   


    使用preparestatement中的setDate 就是plsql里的绑定变量的方式一样,在setDate的时候,会做预处理数据类型转换,已经变量绑定。用setString的话,如果格式不对类型转换时可能出错。