通过JavaAPI获取数字列的比例和精度?
我有一个关于Oracle DB的问题。假设我有一个数字类型的列。如何通过JavaAPI获得本专栏的精度和规模通过JavaAPI获取数字列的比例和精度?,java,jdbc,oracle11g,ojdbc,Java,Jdbc,Oracle11g,Ojdbc,我有一个关于Oracle DB的问题。假设我有一个数字类型的列。如何通过JavaAPI获得本专栏的精度和规模 非常感谢。假设您已经有了一个结果集,您可以获得其元数据,该元数据应提供所需的数据: int column = ... // first column is 1 !! ResultSet rset = ... ResultSetMetaData metadata = rset.getMetaData(); int precision = metadata.getPrecision(co
非常感谢。假设您已经有了一个
结果集
,您可以获得其元数据,该元数据应提供所需的数据:
int column = ... // first column is 1 !!
ResultSet rset = ...
ResultSetMetaData metadata = rset.getMetaData();
int precision = metadata.getPrecision(column);
int scale = metadata.getScale(column);
如果没有结果集
,只需执行SQL语句,不返回任何行,如下所示:
Connection conn = DriverManager.getConnection(...);
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT TheColumn FROM TheTable WHERE 1 = 0");
// or "SELECT * FROM TheTable WHERE 1 = 0");
元数据提供的更多详细信息:假设您已经有一个
结果集
,您可以获得其元数据,该元数据应提供所需的数据:
int column = ... // first column is 1 !!
ResultSet rset = ...
ResultSetMetaData metadata = rset.getMetaData();
int precision = metadata.getPrecision(column);
int scale = metadata.getScale(column);
如果没有结果集
,只需执行SQL语句,不返回任何行,如下所示:
Connection conn = DriverManager.getConnection(...);
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT TheColumn FROM TheTable WHERE 1 = 0");
// or "SELECT * FROM TheTable WHERE 1 = 0");
元数据提供的更多详细信息:您甚至不需要创建查询。您可以使用数据库元数据。然后了解有关数据库的所有信息。(见附件) DataBaseMeta可以收集很多信息。它在JavaAPI文档中有很好的文档记录。
请注意,在扫描大型数据库时,它可能会消耗大量资源 您甚至不需要创建查询。您可以使用数据库元数据。然后了解有关数据库的所有信息。(见附件) DataBaseMeta可以收集很多信息。它在JavaAPI文档中有很好的文档记录。
请注意,在扫描大型数据库时,它可能会消耗大量资源 你可以参考这个,你可以参考这个,谢谢。因此,这意味着如果列所属的表为空,则无法获得列的精度或比例?当然可以-“执行不返回任何行的SQL语句”,尽管也可以执行返回部分或所有行的语句[:-)。谢谢。这意味着如果列所属的表为空,我无法获得列的精度或比例?当然可以-“执行不返回行的SQL语句”,尽管您也可以执行返回部分或全部行的语句[:-)。