在JDBC中未设置元数据,如果结果集为空,则无法执行getColumnNames()。

我尝试查询derby systables:
SYS.SYSTABLES表包含REFERENCEIDCOLUMNAMECOLUMNUMBER,...
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:检索空表的列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8521123/

10-10 14:45