java查询数据库表的相关信息
2010-07-20 10:44
381 查看
java程序中获取oracle数据库中列的相关信息,通过在网上查询,找到了两种方法。
两种方法都可以达到目的。但是在获取列的最大允许字符长度上出现了一些问题。经过实验得知,DBA_TAB_COLS表的data_length给的是当前列所属数据类型的最大长度,而不是列的最大允许字符长度,比如number型的数据,给出的值是22,而实际允许长度却是10。而DATA_PRECISION则只能给出number,float类型数据的最大允许字符长度,对于其他类型的数据全是null。相比之下ResultSetMetaData类的返回值则可以给出满意的答案。getColumnDisplaySize方法给出的是列所属类型的最大长度,和data_length一样。 而getPrecision方法则可以返回列的最大允许字符长度,其中,date型的返回0,定义类型的时候date是不需要定义长度的)。
1.通过查询oracle中的DBA_TAB_COLS表
表名:DBA_TAB_COLSOWNER TABLE_NAME 表、视图或聚簇名COLUMN_NAME 列名DATA_TYPE 列数据类型DATA_TYPE_MOD DATA_TYPE_OWNER DATA_LENGTH 列最大长度DATA_PRECISION Number数据类型的十进制精度,Float数据类型的二进制精度,对其他数据类型则为NULLDATA_SCALE 小数点右边位数NULLABLE 列是否可为空,如果列有非空约束或该列为关键字一部分则该值为NCOLUMN_ID 列创建序列号DEFAULT_LENGTH 当前列宽度DATA_DEFAULT 列默认值NUM_DISTINCT LOW_VALUE 本字段和下一字段为:对三行以上的表,该列的第二小或第二大的值,对三行或少于三行的表,即为最小和最大值。该统计值为前32字节的16进制表示法HIGH_VALUE 同上一字段DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE CHARACTER_SET_NAME CHAR_COL_DECL_LENGTH GLOBAL_STATS USER_STATS AVG_COL_LEN2.使用ResultSetMetaData类
方法摘要 | |
---|---|
String | getCatalogName (int column)获取指定列的表目录名称。 |
String | getColumnClassName (int column)如果调用方法 ResultSet.getObject从列中检索值,则返回构造其实例的 Java 类的完全限定名称。 |
int | getColumnCount ()返回此 ResultSet对象中的列数。 |
int | getColumnDisplaySize (int column)指示指定列的最大标准宽度,以字符为单位。 |
String | getColumnLabel (int column)获取用于打印输出和显示的指定列的建议标题。 |
String | getColumnName (int column)获取指定列的名称。 |
int | getColumnType (int column)检索指定列的 SQL 类型。 |
String | getColumnTypeName (int column)检索指定列的数据库特定的类型名称。 |
int | getPrecision (int column)获取指定列的小数位数。 |
int | getScale (int column)获取指定列的小数点右边的位数。 |
String | getSchemaName (int column)获取指定列的表模式。 |
String | getTableName (int column)获取指定列的名称。 |
boolean | isAutoIncrement (int column)指示是否自动为指定列进行编号,这样这些列仍然是只读的。 |
boolean | isCaseSensitive (int column)指示列的大小写是否有关系。 |
boolean | isCurrency (int column)指示指定的列是否是一个哈希代码值。 |
boolean | isDefinitelyWritable (int column)指示在指定的列上进行写操作是否明确可以获得成功。 |
int | isNullable (int column)指示指定列中的值是否可以为 null。 |
boolean | isReadOnly (int column)指示指定的列是否明确不可写入。 |
boolean | isSearchable (int column)指示是否可以在 where 子句中使用指定的列。 |
boolean | isSigned (int column)指示指定列中的值是否带正负号。 |
boolean | isWritable (int column)指示在指定的列上进行写操作是否可以获得成功。 |
相关文章推荐
- 关于信息查询和相关的数据库操作语句的写法
- nagios数据库 主机相关信息查询
- 查询数据库的相关信息
- Java连接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash
- Java获取数据库的表中各字段的字段名等相关信息-很详细
- Java 中以DataGrid形式显示数据库查询结果和相关JTable操作程序
- 查询统计相关java进程相关信息
- mysql:day3--java访问数据库、CASE...WHEN、无关/相关子查询、表与表之间的关系
- JAVA程序设计(20)----- 查询信息的数据库代码
- 查询数据库客户信息显示在页面并进行相关操作
- [置顶] oracle 快速查询数据库各种信息、及转换对应java代码
- 基于java+play的相关数据库的查询和多表查询问题
- nagios数据库 主机相关信息查询
- Java 查询数据库的一些基本信息
- 在Java的Hibernate框架中对数据库数据进行查询操作
- java查询语句包含中文获取不到数据库数据
- 使用DBCC DBINFO查询数据库信息
- JAVA之IO技术相关Properties类 存储配置文件信息
- Java中删除数据库中的信息
- Java数据库通用查询及封装