想实现这样的功能:改变某个数据表中的一部分字段的数据类型,要改变哪些字段、改变为哪种数据类型是在程序运行当中,由用户来任意指定的。
我现在的做法是根据客户的选择,来建立一个新表,其中各字段的数据类型根据客户的选择来确定,然后从原表中逐条读取记录,将相应字段的数据经过类型转换后,写入新表。
现在的问题是,读取数据时无所谓了,因为原表都是字符型的数据,直接用ResultSet的getString()方法来读就可以了。但在写入数据时,由于事先不知道用户要指定哪种数据类型,如何选择相应的方法(setString()、setInt()、setFloat()等等)?
当然,可以判断用户的选择,根据判断结果,选择相应的方法,例如:
if(0 == userChoice.compareTo("int"))
  rs.setInt(1, newValue);
但对每种数据类型都作判断是不是太麻烦了,我想知道有没有简单一些的办法。谢谢

解决方案 »

  1.   

    楼上的没明白我的意思。就是用户选择好了不也还是要在程序中判断用户到底选择的是什么嘛。我上面说的方法主要的问题是执行效率太低,对每条记录的每个字段都要判断数据类型。
    大家帮我想个方法,先对每个字段进行判断,选择相应的方法(setString()、setInt()、setFloat()等等),然后在对每条记录进行处理时,就不再反复判断了,都用选好的方法就行了。
    谢谢
      

  2.   

    先根据用户的选择定好新表结构,这时也就有了对应的set方法,
    然后再读数据,insert数据,就不用再做判断了。
      

  3.   

    先根据用户的选择定好新表结构,这时也就有了对应的set方法?
    楼上帮忙解释一下,上面这句话(主要是后半句)是怎么实现的?我还是用代码来说话吧。
    PreparedStatement pstmt = connect.prepareStatement("UPDATE MYTABLE SET FNAME = ? WHERE  CUSTID = ?");pstmt.setString(1, "James Bond");
    pstmt.setInt(2, 007);
    pstmt.executeUpdate(0;上面代码是在程序员知道表结构的情况,可以直接用setString()和setInt()。可现在的情况是事先(在编程时)不知道表结构,如何确定使用哪种方法?
      

  4.   

    用这个试试看:public void setObject(int parameterIndex,
                          Object x,
                          int targetSqlType)
                   throws SQLException
    Sets the value of the designated