Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在数据库中插入值结果值超出十进制/数字数据类型(3.1)的范围_Java_Database_Derby - Fatal编程技术网

Java 无法在数据库中插入值结果值超出十进制/数字数据类型(3.1)的范围

Java 无法在数据库中插入值结果值超出十进制/数字数据类型(3.1)的范围,java,database,derby,Java,Database,Derby,当我运行代码时,它甚至会显示以下错误: java.sql.SQLDataException:结果值超出十进制/数字数据类型(3.1)的范围。 我的Java文件: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class Aula4

当我运行代码时,它甚至会显示以下错误:

java.sql.SQLDataException:结果值超出十进制/数字数据类型(3.1)的范围。

我的Java文件:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Aula4 {
    public static void main (String[] args) throws ClassNotFoundException, SQLException {
        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            
            String url = "jdbc:derby://localhost:1527/sistema_academico";
            
            String usuario = "app";
            String senha = "app";
            Connection conexao;
            Scanner ler = new Scanner(System.in);
            conexao = DriverManager.getConnection(url, usuario, senha);
            int id_aluno;
            double nota;
            String nome = null;
            
            System.out.println("Welcome, type your id: ");
            id_aluno = ler.nextInt();
            
            System.out.println("Now, do you need to type your name: ");
            nome = ler.next();
            
            System.out.println("And finally, type your grade:  ");
            nota = ler.nextDouble();
            
            String SQL_Update = "UPDATE aluno set NOTA=? WHERE id_aluno=?";
            String sql = "insert into aluno " +
                  "(id_aluno,nome, nota) " +
                  "values (?,?,?)";
            PreparedStatement stmt = conexao.prepareStatement(sql);
            stmt.setInt(1, id_aluno);
            stmt.setString(2, nome);
            stmt.setDouble(3, nota);
            stmt.executeUpdate();
            stmt.execute();
            stmt.close();
            System.out.println("Accomplished!!");
            
            stmt = conexao.prepareStatement(sql);
            
            }
             catch (SQLException ex){
            System.out.println("Conection failed!"+ex);
        } 
    }
}

我可以输入所有输入,但最后,程序会显示上面的错误。我想在数据库中插入值,但这个错误让我很不安。

stmt.execute()
太多,实际上可能会导致“错误”错误。 最后一个
stmt=conexao.prepareStatement(sql)也是

这可能会有所帮助十进制(3,1)的范围为-9.9。。9.9. 这可能是一个正确的刻度,否则您可能想要十进制(5,2)

nota
可能会被选中

由于浮点(
double
)不精确,在java端使用
BigDecimal
(定点)可能更好

        System.out.println("And finally, type your grade:  ");
        BigDecimal bdnota = ler.nextBigDecimal();

        // Check input: scale and digits
        System.out.println("Scale: " + bdnota.scale());

        stmt.setBigDecimal(3, bdnota);