Я пытаюсь отобразить дробную десятичную дробь в выводе моего 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