2011-12-15 69 views
2

在JDBC中未設置元數據,如果結果集爲空,所以我無法執行getColumnNames()。Apache Derby:檢索空表的列名稱

我試着查詢德比SYSTABLES:

SYS.SYSTABLES表包含REFERENCEIDCOLUMNAMECOLUMNUMBER ...

COLUMNAME就是我尋找的。但我認爲沒有可能與SYS.SYSTABLES或任何其他表一起加入此表。

+0

你確定如果結果集是空的ResultSetMetaData沒有設置?我很確定ResultSetMetaData是大多數工具獲取列信息的方式,所以我很驚訝地聽到這些信息。 – 2011-12-15 15:07:14

回答

3

你可以加入SYSTABLES和syscolumns中與TABLEID = REFERENCEID

select TABLENAME,COLUMNNAME, t.* 
FROM sys.systables t, sys.syscolumns 
WHERE TABLEID = REFERENCEID and tablename = 'SYSCOLUMNS' 

TABLENAME COLUMNNAME   REFERENCEID       COLUMNNAME   COLUMNNUMBER COLUMNDATATYPE         COLUMNDEFAULT COLUMNDEFAULTID AUTOINCREMENTVALUE AUTOINCREMENTSTART AUTOINCREMENTINC 
---------- ------------------ ------------------------------------ ------------------ ------------ ------------------------------------------------ ------------- --------------- ------------------ ------------------ ---------------- 
SYSCOLUMNS AUTOINCREMENTINC 8000001e-00d0-fd77-3ed8-000a0a0b1900 AUTOINCREMENTINC    9 BIGINT           NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS AUTOINCREMENTSTART 8000001e-00d0-fd77-3ed8-000a0a0b1900 AUTOINCREMENTSTART   8 BIGINT           NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS AUTOINCREMENTVALUE 8000001e-00d0-fd77-3ed8-000a0a0b1900 AUTOINCREMENTVALUE   7 BIGINT           NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS COLUMNDATATYPE  8000001e-00d0-fd77-3ed8-000a0a0b1900 COLUMNDATATYPE    4 org.apache.derby.catalog.TypeDescriptor NOT NULL NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS COLUMNDEFAULT  8000001e-00d0-fd77-3ed8-000a0a0b1900 COLUMNDEFAULT     5 java.io.Serializable        NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS COLUMNDEFAULTID 8000001e-00d0-fd77-3ed8-000a0a0b1900 COLUMNDEFAULTID    6 CHAR(36)           NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS COLUMNNAME   8000001e-00d0-fd77-3ed8-000a0a0b1900 COLUMNNAME     2 VARCHAR(128) NOT NULL       NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS COLUMNNUMBER  8000001e-00d0-fd77-3ed8-000a0a0b1900 COLUMNNUMBER     3 INTEGER NOT NULL         NULL   NULL       NULL    NULL    NULL 
SYSCOLUMNS REFERENCEID  8000001e-00d0-fd77-3ed8-000a0a0b1900 REFERENCEID     1 CHAR(36) NOT NULL        NULL   NULL       NULL    NULL    NULL 
+0

非常好。這是工作 – Ginkgochris 2011-12-15 14:15:58