&引用;java.sql.SQLException:一般错误;即使插入有效
我正在执行一个程序,即使insert指令正常工作并且DB(Microsoft Access)中的所有内容都正常,以下代码也会引发此异常,这根本没有帮助:&引用;java.sql.SQLException:一般错误;即使插入有效,java,sql,ms-access,odbc,sqlexception,Java,Sql,Ms Access,Odbc,Sqlexception,我正在执行一个程序,即使insert指令正常工作并且DB(Microsoft Access)中的所有内容都正常,以下代码也会引发此异常,这根本没有帮助: 插入到Prespuesto(Id_cliente,Id_prespuesto,Reserva)值中(1234,false) 插入到Prespuesto(Id_cliente,Id_prespuesto,Reserva)值中(1234,false) java.sql.SQLException:一般错误 位于sun.jdbc.odbc.JdbcOd
插入到Prespuesto(Id_cliente,Id_prespuesto,Reserva)值中(1234,false)
插入到Prespuesto(Id_cliente,Id_prespuesto,Reserva)值中(1234,false)
java.sql.SQLException:一般错误
位于sun.jdbc.odbc.JdbcOdbc.createSQLException(未知源)
位于sun.jdbc.odbc.JdbcOdbc.standardError(未知源)
位于sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(未知源)
位于sun.jdbc.odbc.JdbcOdbcStatement.execute(未知源)
位于sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(未知源)
在datos.AccesoBD.insertapusuesto(AccesoBD.java:137)
在aplicaciones.capaapplicion.insertapurpuesto(capaapplicion.java:81)
在Interfaces.nuevopprespuesto$2.actionPerformed(nuevopprespuesto.java:103)
在javax.swing.AbstractButton.fireActionPerformed(未知源)
位于javax.swing.AbstractButton$Handler.actionPerformed(未知源)
在javax.swing.DefaultButtonModel.fireActionPerformed(未知源)
位于javax.swing.DefaultButtonModel.setPressed(未知源)
位于javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知源代码)
位于java.awt.Component.ProcessMouseeEvent(未知源)
位于javax.swing.JComponent.ProcessMouseeEvent(未知源)
位于java.awt.Component.processEvent(未知源)
位于java.awt.Container.processEvent(未知源)
位于java.awt.Component.dispatchEventImpl(未知源)
位于java.awt.Container.dispatchEventImpl(未知源)
位于java.awt.Component.dispatchEvent(未知源)
位于java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源)
位于java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源)
位于java.awt.LightweightDispatcher.dispatchEvent(未知源)
位于java.awt.Container.dispatchEventImpl(未知源)
位于java.awt.Window.dispatchEventImpl(未知源)
位于java.awt.Component.dispatchEvent(未知源)
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$200(未知源)
在java.awt.EventQueue$3.run处(未知源)
在java.awt.EventQueue$3.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)
在java.awt.EventQueue$4.run处(未知源)
在java.awt.EventQueue$4.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)
hasta aqui bien
将值(1123.0234,1)插入ProductoPresupuesto(Id_Producto,PrecioUd,Id_PressPuesto,Unidades)中;
hasta aqui bien
将值(2270.0234,1)插入ProductoPresupuesto(Id_Producto,PrecioUd,Id_PressPuesto,Unidades)中代码>
在成功执行的打印语句中,我打印的值在DB中。我检查了数据库,所有的Id都在那里
ProductoPresupuesto有两个外键作为主键,它们从不重复(我的意思是两者同时出现)
在这里您可以看到我的代码:
public void insertaPresupuesto(Presupuesto presu){
String insert;
for(int i=0; i<presu.getL().size(); i++){
insert="INSERT INTO Presupuesto (Id_cliente,ID_Presuspuesto,Reserva) VALUES ("+presu.getC().getID_Cliente()+","+presu.getId()+", "+presu.isReserva()+")";
Statement stm1;
try {
stm1 = conn.createStatement();
System.out.printf("%s\n",insert);
stm1.executeUpdate(insert);//THIS IS THE LINE 137
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i=0; i<presu.getL().size(); i++){
float precio=presu.getL().get(i).getPrecioProd()-presu.getL().get(i).getRebaja();
System.out.printf("hasta aqui bien\n");
insert="INSERT INTO ProductoPresupuesto (Id_Producto,PrecioUd,ID_Presuspuesto,Unidades) VALUES ("+presu.getL().get(i).getId()+","+precio+","+presu.getId()+","+presu.getUnidades().get(i)+");";
Statement stm2;
try {
stm2 = conn.createStatement();
System.out.printf("%s\n",insert);
stm2.executeUpdate(insert);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void insertapuesto(预存预存预存){
插入字符串;
对于(inti=0;i可以突出显示AccesoBD.java中的第137行吗
datos.AccesoBD.insertapusuesto(AccesoBD.java:137)
这将有助于缩小问题的来源
顺便说一句:我建议您使用PreparedStatements。这样您就可以动态设置参数并避免字符串转义错误。例如:
PreparedStatement ps = con.prepareStatement("INSERT INTO ProductoPresupuesto (Id_Producto,PrecioUd,ID_Presuspuesto,Unidades) VALUES (?,?,?));
ps.setString(1, param1);
ps.setString(2, param2);
ps.setString(3, param3);
stm1.executeUpdate(insert);是第137行。很抱歉,我没有找到任何选项来突出显示内部代码。@SUNNYben