在未设置 JDBC 元数据时,如果结果集为空,则无法执行 getColumnNames()。
我尝试查询 derby 系统表:
SYS.SYSTABLES
表包含 REFERENCEID
、COLUMNAME
、COLUMNUMBER
、...
COLUMNAME
是我正在搜索的内容。但我认为无法将该表与 SYS.SYSTABLES 或任何其他表连接起来。
最佳答案
您可以使用 TABLEID = REFERENCEID
连接 systables 和 syscolumns
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
关于java - Apache Derby : Retrieve column names for an empty table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521123/