在创建PreparedStatement后需要向这个sql语句中的所有?号赋值,一般为stat.setString\setInteger,在我的项目中这有可能需要判定数据源的数据可是,我尝试了不管数据库字段类型为任何类型,所有都setString也是没有问题的,请问大家在程序中也是这样实现的么,这样确实很方便,但缺点在哪,有没有什么安全隐患?

解决方案 »

  1.   

    你setString里的参数是指定的数据库表的列名么?还是指定的索引?我记得好象可以指定索引的吧,如果指定索引就跟类型没有什么关系了.
      

  2.   

    跟数据库有关,如果数据库中的字段类型为:Datatime
    如果是mysql,则setString()/setDate()都没有问题
    但如果是oracle,setString()是不行的,会报错其它数据库没有试用,不知道会怎么样,楼主可以用setObject(),呵呵
      

  3.   

    哦,忘了和大家说,我的数据库是mysql,那个setString应该是setString(1,"XXX");
      

  4.   

    这个要看你使用的数据库的 mysql的可以 oracle的是不行的
      

  5.   

    oracle也可以呀,前几天我还用了。
      

  6.   

    呵呵,不会的,你做个insert的(非char类型的)就会报错。
      

  7.   

    都可以吧,好像JDBC会自动判断的
    最通用的方法是
    setObject