如何获取oracle中某表的字段类型。

如何获取oracle中某表的字段类型。

使用JDBC就可以的
[code="java"]
// 获取数据库的连接这些操作我就省了
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM H_TEST");

ResultSet rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名

if(rsmd != null){

int count  = rsmd.getColumnCount();

for(int i=1;i<=count;i++){

  System.out.println("获得1列对应数据类型的类 " + rsmd.getColumnClassName(1));
 // rsmd 还有其他的 方法可用,你可以查看JDK中 ResultSetMetaData 类的帮助文档

}

[/code]

获取元数据就可以啊。
[code="java"]
Connection con = null;

PreparedStatement pstm = null;

ResultSet rs=null;

ResultSetMetaData rsm = null;

try {

con = MySqlDBConnection.DBConnection();

String sql = "select * from student order by id";

pstm= con.prepareStatement(sql);

rs=pstm.executeQuery();

rsm=pstm.getMetaData();

System.out.println("*****开始获取元数据*****");

System.out.print("此 ResultSet 对象中一共有列数为————");

System.out.println(rsm.getColumnCount());

for(int i=1;i<=rsm.getColumnCount();i++){

System.out.println("第"+i+"字段的列名为:"+rsm.getColumnName(i)+" 数据类型为:"+rsm.getColumnTypeName(i));

}

System.out.println("数据库名称为:"+rsm.getCatalogName(1));

System.out.println("数据库表名称为:"+rsm.getTableName(1));

System.out.println("是否自动为指定列进行编号 :"+rsm.isAutoIncrement(1));

System.out.println("指定的列是否明确不可写入:"+rsm.isReadOnly(1));

System.out.println("是否可以在 where 子句中使用指定的列:"+rsm.isSearchable(2));

System.out.println("在指定的列上进行写操作是否可以获得成功:"+rsm.isWritable(1));

} catch (SQLException e) {

e.printStackTrace();

}finally{

MySqlDBConnection.closeResultSet(rs);

MySqlDBConnection.closePreparedStatement(pstm);

MySqlDBConnection.closeConnection(con);

}

[/code]

你可以参考这个贴子:
[url]http://x98zero.iteye.com/blog/168703[/url]

用sql可以搞定
[code="sql"]select * from ALL_TAB_COLUMNS where table_name = 'table_name'[/code]

[code="java"]SELECT data_type FROM User_Tab_Cols s WHERE s.column_name='xx' AND s.table_name='tt';[/code]

[code="sql"]--查看某个表的字段类型,
/****

  • user_Tab_Cols 当前用户;如果使用all_Tab_Cols,JDBC是访问不到的,会出现试图或表不存在,这是因为权限
  • all_Tab_Cols是DBA角色使用的。 *
  • 下面语句可以查看表或试图字段类型,及字段长度。Tabel_name 为表名称或试图名称 ****/ select T.DATA_TYPE 字段类型,T.Data_Length 字段长度 from user_Tab_Cols T WHERE T.TABLE_NAME=UPPER('CZRYXX') AND T.COLUMN_NAME=UPPER('czrymc'); [/code]