如何获取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"]--查看某个表的字段类型,
/****