Java Apache Дерби - DECIMAL Данные столбца 0.001, вывод 0.0 - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь отобразить дробную десятичную дробь в выводе моего java кода. Я создаю столбец в операторе sql как DECIMAL, в выводе я привел его как double. Когда данные в столбце, например, 3,01, он отображается правильно, однако, если данные в столбце 0,001, отображается только 0,0. Я использую apache дерби и java. Речь идет о столбце «BatAvg». Код ниже:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.Statement;
public class CreateDBDemo
{
    public static void main(String[] args)
    {
    // Create database
    String databaseURL = "jdbc:derby:booksdb;create=true";

    try (Connection conn = DriverManager.getConnection(databaseURL))
    {
        // create a SQL instruction that the connection object will execute
        Statement statement = conn.createStatement();

        // if the book table does not exist, execute the code in the if block
        if (!doesTableExists("Players", conn))
        {
            // create a table named book
            String sql = "CREATE TABLE Players (PlayerNumber int, FName varchar(20), LName varchar(20), Psn varchar(2), BatAvg DECIMAL)";
            statement.execute(sql);
            // insert two rows of data into the book table
            sql = "INSERT INTO Players VALUES (27, 'Carlton', 'Fisk', 'C', 0.001),(3, 'Jimmie', 'Foxx', '1B', 0.002)";
            statement.execute(sql);
        }

        String sql = "SELECT * FROM Players";
        ResultSet result = statement.executeQuery(sql);

        while (result.next())
        { screen
            //System.out.println(result.getString("PlayerNumber"));
            int playerNumber = result.getInt("PlayerNumber");
            String fName = result.getString("Fname");
            String lName = result.getString("Lname");
            String posit = result.getString("Psn");
            double batting = result.getDouble("BatAvg");
            System.out.println(playerNumber+", "+fName+" "+lName+", "+posit+", "+batting);
        }
        // shut down all databases and the derby engine.
        DriverManager.getConnection("jdbc:derby:;shutdown=true");

    }// end of try block
    catch (SQLException ex)
    {
        // A clean shutdown always throws SQL exception XJ015, which can be ignored.
        if (ex.getSQLState().equals("XJ015"))
        {
            System.out.println("Derby shutdown normally");
        }
        else
        {
            ex.printStackTrace();
        }
    }// end of catch block
} // end of main method
private static boolean doesTableExists(String tableName, Connection conn)

throws SQLException
{
    DatabaseMetaData meta = conn.getMetaData();
    ResultSet result = meta.getTables(null, null, tableName.toUpperCase(), null);
    return result.next();
}
} // end of class
...