How do I get column’s precision and scale value?

For instance you have a number or double typed column in a database table, and you want to get the precision and the scale of that column. Here is an example for you.

package org.kodejava.example.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class ScaleAndPrecisionExample {
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost/testdb";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";
    
    public static void main(String[] args) throws Exception {
	Connection connection = null;
	try {
	    Class.forName(DRIVER);	    
	    connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
	    
	    Statement statement = connection.createStatement();
	    String query = "SELECT stock_id, name, price FROM stocks";
	    ResultSet resultSet = statement.executeQuery(query);
	    
	    ResultSetMetaData metadata = resultSet.getMetaData();
	    int precision = metadata.getPrecision(3);
	    int scale = metadata.getScale(3);
	    
	    System.out.println("Precision: " + precision);
	    System.out.println("Scale    : " + scale);
	} catch (SQLException e) {
	    e.printStackTrace();
	} finally {
	    connection.close();
	}
    }
}

The result:

Precision: 10
Scale    : 2

Wayan

Programmer, runner, recreational diver, live in the island of Bali, Indonesia. Mostly programming in Java, creating web based application with Spring Framework, Hibernate / JPA. Support me by donating >> here <<.

Leave a Reply