通过 Java API 获取 NUMBER 列的小数位数和精度?
Get scale and precision of a NUMBER column through Java API?
我有一个关于 Oracle 数据库的问题。假设我有一列 NUMBER 类型。如何通过JavaAPI得到这一列的精度和小数位数?
非常感谢。
假设您已经有一个 ResultSet
,您可以获得它的元数据,它应该提供所需的数据:
int column = ... // first column is 1 !!
ResultSet rset = ...
ResultSetMetaData metadata = rset.getMetaData();
int precision = metadata.getPrecision(column);
int scale = metadata.getScale(column);
如果您没有 ResultSet
,只需执行 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");
有关元数据提供内容的更多详细信息:ResultSetMetaData
您甚至不需要创建查询。您可以使用数据库元数据。然后找出有关您的数据库的所有信息。 (参见 http://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html)
DataBaseMetaData dmd = connection.getMetaData();
ResultSet rs = dmd.getColumns("DB-Name", "Schema-Name","TableName","ColumnName");
System.out.println("Type Name: " + rs.getString(6) + "\n" +
"Column Size: " + rs.getInt(7) + "\n" +
"Decimal Digits: " + rs.getInt(9) + "\n" +
"Radix: " + rs.getInt(10) + "\n" );
DataBaseMeta 可以收集很多信息。它在 Java-API-Docs 中有很好的记录。
请注意,当您扫描大型数据库时,它可能会消耗大量资源。
我有一个关于 Oracle 数据库的问题。假设我有一列 NUMBER 类型。如何通过JavaAPI得到这一列的精度和小数位数?
非常感谢。
假设您已经有一个 ResultSet
,您可以获得它的元数据,它应该提供所需的数据:
int column = ... // first column is 1 !!
ResultSet rset = ...
ResultSetMetaData metadata = rset.getMetaData();
int precision = metadata.getPrecision(column);
int scale = metadata.getScale(column);
如果您没有 ResultSet
,只需执行 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");
有关元数据提供内容的更多详细信息:ResultSetMetaData
您甚至不需要创建查询。您可以使用数据库元数据。然后找出有关您的数据库的所有信息。 (参见 http://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html)
DataBaseMetaData dmd = connection.getMetaData();
ResultSet rs = dmd.getColumns("DB-Name", "Schema-Name","TableName","ColumnName");
System.out.println("Type Name: " + rs.getString(6) + "\n" +
"Column Size: " + rs.getInt(7) + "\n" +
"Decimal Digits: " + rs.getInt(9) + "\n" +
"Radix: " + rs.getInt(10) + "\n" );
DataBaseMeta 可以收集很多信息。它在 Java-API-Docs 中有很好的记录。 请注意,当您扫描大型数据库时,它可能会消耗大量资源。