java - 数据截断:不正确的双精度值:第 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:组合框
我希望这足以解决我的问题,如果您需要更多详细信息,我会更新问题
解决方案
推荐阅读
- python-3.x - 只发现积极因素
- swiftui - 我无法使用按钮关闭 Modal 并从 NavigationBar 再次打开它
- python - 当两个数据帧具有不同数量的条目(值匹配但索引不匹配)时,如何使用 DataFrame.isin?
- javascript - 将 JSInterop 的 ExampleJsInterop JavaScript 代码转换为 TypeScript
- java - 未触发 LinearLayout 中的 OnClickListener
- clearcase - 列出 Clearcase 中特定文件/目录的所有分支
- json - 邮递员测试 - 断言仅在对象中设置键:值对,没有意外返回
- javascript - 如何通过按钮将插入数据与网页上现有的数据成员一起传输到数据库中?
- vue.js - 何时使用 Vue Composition API 的 setup() 钩子
- python - 在 skimage 中设置图像的亮度不会返回恒定的亮度