Java 是否可以使用table_name.column_name文本标签从Oracle数据库获取列metatdata?

Java 是否可以使用table_name.column_name文本标签从Oracle数据库获取列metatdata?,java,oracle,jdbc,metadata,Java,Oracle,Jdbc,Metadata,我已被授予访问Oracle数据库的权限,我正在尝试确定表中的给定列是否可为空。我可以连接到Oracle数据库并获取连接元数据。普通SQL解决方案(适用于各种数据库访问层) 要获取特定列,请执行以下操作: SELECT NULLABLE FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' AND COLUMN_NAME = '<YOUR_COLUMN_NAME>'; 选择可为空 从用户选项卡列 其

我已被授予访问Oracle数据库的权限,我正在尝试确定表中的给定列是否可为空。我可以连接到Oracle数据库并获取连接元数据。

普通SQL解决方案(适用于各种数据库访问层)

要获取特定列,请执行以下操作:

SELECT NULLABLE 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' 
AND COLUMN_NAME = '<YOUR_COLUMN_NAME>';
选择可为空
从用户选项卡列
其中表_NAME=“”
和列_NAME=“”;
要获取表中的所有列,请执行以下操作:

SELECT COLUMN_NAME, NULLABLE 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' ;
选择列名称,可为空
从用户选项卡列
其中表_NAME=“”;
如果该表位于另一个架构中,则应按以下方式使用:

SELECT COLUMN_NAME, NULLABLE 
FROM ALL_TAB_COLUMNS 
WHERE OWNER = '<OWNER_SCHEMA_NAME>' 
AND TABLE_NAME = '<YOUR_TABLE_NAME>';
选择列名称,可为空
从所有_选项卡_列
其中所有者=“”
表_NAME=“”;
(基于发布日期)

JDBC特定解决方案:

您可以使用“使用对象”:

  • 通过调用
    getColumns(null,null,'yourtablename','%',null)获取表数据
  • 然后从结果集中,获取您需要的“COLUMN_NAME”列和“NULLABLE”
(来自)

也可以使用虚拟查询: 我不喜欢这个,这不是一个干净的解决方案…

普通的SQL解决方案(适用于各种DB访问层)

要获取特定列,请执行以下操作:

SELECT NULLABLE 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' 
AND COLUMN_NAME = '<YOUR_COLUMN_NAME>';
选择可为空
从用户选项卡列
其中表_NAME=“”
和列_NAME=“”;
要获取表中的所有列,请执行以下操作:

SELECT COLUMN_NAME, NULLABLE 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' ;
选择列名称,可为空
从用户选项卡列
其中表_NAME=“”;
如果该表位于另一个架构中,则应按以下方式使用:

SELECT COLUMN_NAME, NULLABLE 
FROM ALL_TAB_COLUMNS 
WHERE OWNER = '<OWNER_SCHEMA_NAME>' 
AND TABLE_NAME = '<YOUR_TABLE_NAME>';
选择列名称,可为空
从所有_选项卡_列
其中所有者=“”
表_NAME=“”;
(基于发布日期)

JDBC特定解决方案:

您可以使用“使用对象”:

  • 通过调用
    getColumns(null,null,'yourtablename','%',null)获取表数据
  • 然后从结果集中,获取您需要的“COLUMN_NAME”列和“NULLABLE”
(来自)

也可以使用虚拟查询:
我不喜欢这个,这不是一个干净的解决方案…

非常感谢您的快速回答。但在我看来,这是一个解决办法。无论如何,再次感谢您。@AlexNNovak我添加了一些JDBC特定的信息,因为最后一句话告诉我您在使用它。我第一次没有注意到……感谢您的回答,我通过向Orecle DB发送的特定查询“从用户选项卡中选择可为null的表格名称”解决了这个问题。|列名称“非常感谢您的快速回答。但在我看来,这是一个解决办法。无论如何,再次感谢您。@AlexNNovak我添加了一些JDBC特定的信息,因为最后一句话告诉我您在使用它。我第一次没有注意到……谢谢你的回答,我通过向Orecle DB发送的特定查询解决了这个问题,“从用户选项卡中选择可为空的表格,其中表格名为列名”