假如在oracle8.1.7中有schema scott,其中有table txdgma11,它的script语句这样定义的﹕
DROP TABLE TXDGMA11 CASCADE CONSTRAINTS ; CREATE TABLE TXDGMA11 ( 
  CO         VARCHAR2 (4)  NOT NULL, 
  DTLVDP     VARCHAR2 (8)  NOT NULL, 
  MNLNUMBER  VARCHAR2 (20)  NOT NULL, 
  ARCCUNT    VARCHAR2 (3)  NOT NULL, 
  PRDID      VARCHAR2 (20)
     CONSTRAINT NU_TXDGMA11_PRDID   NOT NULL, 
  CFMMK      VARCHAR2 (1)
     CONSTRAINT NU_TXDGMA11_CFMMK   NOT NULL, 
  CANCELMK   VARCHAR2 (1)
     CONSTRAINT NU_TXDGMA11_CANCELMK   NOT NULL, 
  TXEMP      VARCHAR2 (20)
     CONSTRAINT NU_TXDGMA11_TXEMP   NOT NULL, 
  TXDAT      VARCHAR2 (8)
     CONSTRAINT NU_TXDGMA11_TXDAT   NOT NULL, 
  TXTM       VARCHAR2 (8)
     CONSTRAINT NU_TXDGMA11_TXTM   NOT NULL, 
  CONSTRAINT PK_TXDGMA11
  PRIMARY KEY ( CO, DTLVDP, MNLNUMBER, ARCCUNT ) 
    USING INDEX 
     TABLESPACE TNG00A PCTFREE 10
     STORAGE ( INITIAL 40K NEXT 40K PCTINCREASE 50 ))
   TABLESPACE TNG00A NOLOGGING 
   PCTFREE 20
   PCTUSED 80
   INITRANS 1
   MAXTRANS 255
  STORAGE ( 
   INITIAL 16384
   NEXT 8192
   MINEXTENTS 1
   MAXEXTENTS 2147483645
   FREELISTS 1 FREELIST GROUPS 1 )
   NOCACHE; 
ALTER TABLE TXDGMA11 ADD  CONSTRAINT FK_GMA11_SAD31_1
 FOREIGN KEY (CO, DTLVDP) 
  REFERENCES PDS1.TXDSAD31 (CO, DP) ;
请问如何在java程序中判断此表有哪些字段﹐字段名﹐数值类型﹐宽度﹔是否是primary key及foreign key,是否为not null.
请高手指点。

解决方案 »

  1.   

    这需要查ORACLE的相关表的数据字典才能得到这些信息的了,不过具体的我也不记得了,得去找找
      

  2.   

    查找系统表:
    user_tab_columns
    USER_CONSTRAINTS
    user_cons_columns
      

  3.   

    还有:user_tables
    user_triggers
    user_objects
    user_col_comments
    user_tab_comments
    user_db_links
    user_jobs
    user_free_space
    等都比较有用。
      

  4.   


    ......
    try {
    st = conn.createStatement();
    rs = st.executeQuery("select * from "+sTableName+" where 1<>1 ");
    ResultSetMetaData rsMeta;
    rsMeta = rs.getMetaData();
         }
    catch(SQLException e)
    {
      e.printStackTrace();
    }
    获得rsMeta以后就好办了:
                rsMeta.getColumnName(1);//可以获得第一列的列名
                rsMeta.getColumnType(1);//可以获得列的类型不知楼主的意思是不是要这个?