matedata 类..所有信息都可以取道

解决方案 »

  1.   

    public Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd) throws
          SQLException {
        Vector currentRow = new Vector();
        for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
          switch (rsmd.getColumnType(i)) {
            case Types.VARCHAR:
              currentRow.addElement(rs.getString(i));
              break;
            case Types.INTEGER:
              currentRow.addElement(new Integer(rs.getInt(i)));
              break;
            case Types.TIMESTAMP:
              currentRow.addElement(rs.getDate(i));
              break;
            default:
          }
        }
        return currentRow;
      }
     ResultSetMetaData
      

  2.   

    先谢谢greenmars2004(火球)了
    通过你的方法可以获取不同的列类型的值
    但是我还要通过从数据库表中取出来的信息还原成另一个表
    即:
    table1---->JDBC----->table2
    要求table2的表结构和table1的表结构是一样的:
    比方说:
    table1中有一列类型是char(10),但是通过你的那个方法,只能获取char,并不能获取长度方面的信息
    我找了找JDBC的文档
    好像没有看到这方面的方法
    难道要自己实现不成??
      

  3.   

    使用
    DatabaseMetaData类和ResultsetMetaData类
      

  4.   

    可以取出表列名在取值 这样:用
    ResultSet rs=.......
    ResultSetMetaDate rsmd=rs.getMetaData();
    rsmd.getColumnName( int i)(根据索引取表列值)别的你就应该会了吧
      

  5.   

    感谢各位CSDN高手的帮助我现在是可以把列名,列类型(类型名)和表数据取出来了但是这样做丢掉了很多表其他的信息啊
    比方说主键,列类型长度,外键(这个暂时不用)...我想要实现的是通过JDBC就能把一个表,毫不失真的,还原回去
      

  6.   

    毫不失真还原?不可能的,很多东西JDBC规范里都没有接口,没有哪个JDBC驱动能够做所有的事
      

  7.   

    但是这样做丢掉了很多表其他的信息啊
    比方说主键,列类型长度,外键(这个暂时不用)..我觉得楼主的要求如果仅仅用JDBC好象做不到,比如你说的上面的信息是保存在数据中的,这些信息也是保存在数据库中某些特定的表中,不同的数据库保存在不同的表名中,要做也只是针对某个具体的数据库而言,不可能对所有的数据库。
      

  8.   

    我想要实现的是通过JDBC就能把一个表,毫不失真的,还原回去用数据库中提供的工具,比jdbc要方便很多