java - Apache Derby : Retrieve column names for an empty table

标签 java derby

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

我尝试查询 derby 系统表:

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 : Retrieve column names for an empty table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521123/

相关文章:

derby - RazorSQL,使用Derby添加配置文件

java - 检查文本字段是否有多个点

java - volatile 变量 'reads' 是否与正常读取一样快?

java - 理解java swing的困难

java - 如何覆盖Java DB?

r - 使用 StatET 时,信息显示在浏览器中,而不是 "R Help" Pane 中

java - 如何使用复合 ID 解决 Session.get() 奇怪的行为?

java - 以另一个用户身份加载进程?

java - 流已被读取且已到达文件末尾且无法重新使用

java - Derby/JavaDB 与 SQLiteJDBC