ResultSetMetaData rsMetaData = rs.getMetaData(); int numberOfColumns = rsMetaData.getColumnCount();rs就是ResultSet
***************************************************************** 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值查找出表的列,在进行统计,即可得到该表的列数
可以用rownum。 select rownum from (select * from table_name) b 不过只有部分数据库能用吧。
select country(*) from table_name你獲得的列表size也可以呀
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(); } }
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值查找出表的列,在进行统计,即可得到该表的列数
select rownum from (select * from table_name) b
不过只有部分数据库能用吧。
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();
}
}
本来我也是来推荐这种做法,被rejoy2009先说了。:》 那就顺便顶下吧。 使用MetoData方式 +1