首页 > 解决方案 > 数据截断:不正确的双精度值:第 1 行的列 'controlfares'.'ventas'.'Precio' 的 'Rifle de agua'

问题描述

我一直在尝试解决这个问题几个小时,但我没有能力解决它,我认为导致问题的代码是这样的:

private void jBGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                          
    if (jTFFactura.getText().isEmpty()) {
        return;
    }

    Connection conn = null;

    PreparedStatement psInsertarFactura = null;
    PreparedStatement psInsertarVentas = null;

    String vConsultaFactura = "INSERT INTO facturas"
            + "(FacturaVT, Id_Cliente, "
            + "Sub_Total, Impuesto_Total, Total_Facturado) "
            + "VALUES (?,?,?,?,?)";

    String vConsultaVentas = "INSERT INTO ventas"
            + "(facturav, Id_Producto, Id_Cliente, Cantidad, Precio, Subtotal, Impuesto, Total) "
            + "VALUES (?,?,?,?,?,?,?,?)";

    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/controlfares"
                + "?useUnicode=true&useJDBCCompliantTimezoneShift="
                + "true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "");

        psInsertarVentas = conn.prepareStatement(vConsultaVentas);

        for (int i = 0; i < jTProductos.getRowCount(); i++) {

            String vFactura = jTFFactura.getText();
            String vCliente = jTFIdCliente.getText();
            String vId_Producto = jTProductos.getValueAt(i, 0).toString();
            String vCantidad = jTProductos.getValueAt(i, 1).toString();
            String vPrecio = jTProductos.getValueAt(i, 2).toString();
            String vSubtotal = jTProductos.getValueAt(i, 3).toString();
            String vImpuesto = jTProductos.getValueAt(i, 4).toString();
            String vTotal = jTProductos.getValueAt(i, 5).toString();

            psInsertarVentas.setString(1, vFactura);
            psInsertarVentas.setString(2, vId_Producto);
            psInsertarVentas.setString(3, vCliente);
            psInsertarVentas.setString(4, vCantidad);
            psInsertarVentas.setString(5, vPrecio);
            psInsertarVentas.setString(6, vSubtotal);
            psInsertarVentas.setString(7, vImpuesto);
            psInsertarVentas.setString(8, vTotal);
            psInsertarVentas.executeUpdate();
        }

        psInsertarFactura = conn.prepareStatement(vConsultaFactura);

        int vFacturaVT = Integer.parseInt(jTFFactura.getText());
        int vId_Cliente = Integer.parseInt(jTFIdCliente.getText());
        float vSub_total = Float.parseFloat(jTFSubtotal1.getText());
        float vImpuesto_Total = Float.parseFloat(jTFImpuesto1.getText());
        float vTotal_Facturado = Float.parseFloat(jTFTotalPagar.getText());

        psInsertarFactura.setInt(1, vFacturaVT);
        psInsertarFactura.setInt(2, vId_Cliente);
        psInsertarFactura.setFloat(3, vSub_total);
        psInsertarFactura.setFloat(4, vImpuesto_Total);
        psInsertarFactura.setFloat(5, vTotal_Facturado);
        psInsertarFactura.executeUpdate();

        JOptionPane.showMessageDialog(null, "Datos Correctamente insertado");

        conn.close();

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage(),
                "Conexion de la BD mala", JOptionPane.WARNING_MESSAGE);
    }
    bloquearCajas(false);
    bloquearBotones(true, false);
}                                         

我知道此代码是问题的可能原因,因为在警报中我收到我输入的消息,上面写着“Conexion de la BD mala” ,如下所示

我所知道的一点是,这可能是同一代码的错误,否则我将继续检查代码的其他部分是否可能是原因

可能相关的细节:

'Rifle de agua' 数据来自另一个数据库,该数据进入表单中的组合框,该组合框的代码如下:

 private void jCBProductoItemStateChanged(java.awt.event.ItemEvent evt) {                                             
    ObtenerProducto vProducto = (ObtenerProducto) jCBProducto.getSelectedItem();
    String vPrecio = vProducto.getPrecio();
    String vId = vProducto.getID();
    jTFIProducto.setText(vId);
    jTFPrecio.setText(vPrecio);

}  

ObtenerProducto代码是我调用的 Java 类,该 Java 类用于从另一个数据库获取数据,并放入名为 Producto 的组合框中,就像它出现在我的表单中一样

ventas es otra BD especificamente sera donde se guardaran los datos ingresados del que formulario

ventas是该数据库中的另一个数据库,我正在尝试将我的表单数据

Precio 是数据库中的一列

我的表格如下所示:

在此处输入图像描述

DB = 数据库

jTF:文本字段 jT:表格 jCB:组合框

我希望这足以解决我的问题,如果您需要更多详细信息,我会更新问题

标签: javaawt

解决方案


推荐阅读