比如“select * from table_name”
jdbc中有方法能获取到当前*所代表的列列数吗?

解决方案 »

  1.   

    ResultSetMetaData rsMetaData = rs.getMetaData();    int numberOfColumns = rsMetaData.getColumnCount();rs就是ResultSet
      

  2.   

    *****************************************************************
    select id from sysobjects where xtype='u' and name='表名'
    查找出表的ID值
    ****************************************************************
    select count(name) from syscolumns where id=(select id from sysobjects where xtype='u' and name='表名')
    根据表的ID值查找出表的列,在进行统计,即可得到该表的列数 
      

  3.   

    可以用rownum。
    select rownum from (select * from table_name) b
    不过只有部分数据库能用吧。
      

  4.   

    select country(*) from table_name你獲得的列表size也可以呀
      

  5.   


    package org.rejoy.call;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;public class DB { public static void main(String[] args) {
    int count = new DB().getColumnCount();
    System.out.println("Person表的列数为:" + count);
    } public Connection getConnection() {
    Connection conn = null;
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "usr_ser1",
    "usr_ser1");
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return conn;
    } public int getColumnCount() {
    int count = 0;
    String sql = getSelectClause("person", new String[] { "id", "name" },
    new String[] { "id", "name" }, new Object[] { 1, "Java" });
    try {
    Connection conn = getConnection();
    PreparedStatement pstmt = conn.prepareStatement(sql);
    ResultSet rs = pstmt.executeQuery();
    ResultSetMetaData rsmd = rs.getMetaData();
    count = rsmd.getColumnCount();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return count;
    } /**
     * 获取select语句
     * @param tableName 表名
     * @param columns 列
     * @param columnName 列名
     * @param values 值
     * @return
     */
    public String getSelectClause(String tableName, String[] columns,
    String[] columnName, Object[] values) {
    StringBuilder temp = new StringBuilder("select ");
    if (columns != null && columns.length > 0) {
    for (int i = 0; i < columns.length; i++) {
    temp.append(columns[i]);
    temp.append(",");
    }
    temp.deleteCharAt(temp.length() - 1);
    }
    temp.append(" from ").append(tableName); if (columnName != null && columnName.length > 0) {
    temp.append(" where ");
    for (int i = 0; i < columnName.length; i++) {
    if (values[i] instanceof String) {
    temp.append(columnName[i]).append("=").append("'").append(values[i]).append("'")
    .append(" and ");
    } else {
    temp.append(columnName[i]).append("=").append(values[i])
    .append(" and ");
    }
    }
    temp.delete(temp.length() - 4, temp.length() - 1);
    }
    return temp.toString();
    }
    }
      

  6.   

    ResultSetMetaData rsMetaData = rs.getMetaData();int numberOfColumns = rsMetaData.getColumnCount();
      

  7.   

    select sum(*) from tablename
      

  8.   

    rejoy2009 的做法比较合适,合理使用jdbc规范来获取table基础信息。
    本来我也是来推荐这种做法,被rejoy2009先说了。:》 那就顺便顶下吧。  使用MetoData方式 +1