在调试我程序的这一部分时,它一直告诉我的prcprocedimientoalmacenado(我的存储过程)是无效的。这是以下代码,该代码将数据库连接到我的代码(这是GUI接口,我将值添加到数据库中)
) private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int idFacultad;
String connectionUrl= "jdbc:mysql://localhost:3306/basespro";
Connection con = null;
try{
CallableStatement prcProcedimientoAlmacenado=null;
Class.forName("com.mysql.jdbc.Driver");
con=(Connection) DriverManager.getConnection(connectionUrl,"root","bases13");
//con.setAutoCommit(false);
prcProcedimientoAlmacenado = con.prepareCall("{call addMateria(?,?,?)}");
int i=Integer.parseInt(id_Materia.getText());
System.out.println(" "+i);
prcProcedimientoAlmacenado.setInt("idMateria",i);
prcProcedimientoAlmacenado.setInt("idFacultad", 2);
prcProcedimientoAlmacenado.setString("nombreMateria", nombre_Materia.getText());
prcProcedimientoAlmacenado.execute();
con.commit();
}catch(Exception ex){
System.out.println(ex.getMessage());
}
该过程如下,但是我在MySQL Workbench中进行了测试,并且确实添加了。(更明确,该过程需要2个字符串和一个整数,并将其添加到表" Materia"
中DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `addMateria`(In idMa int, In idFa int, In nomMa varchar(40))
BEGIN
INSERT INTO Materia(idMateria,idFacultad,nombreMateria) VALUES (idMa,idFa,nomMa);
END
尝试使用此语法:
...
prcProcedimientoAlmacenado.setInt(1,i);
prcProcedimientoAlmacenado.setInt(2, 2);
prcProcedimientoAlmacenado.setString(3, nombre_Materia.getText());
...
要执行更新,删除或将任何数据插入数据库中的查询,您必须使用:
executeUpdate(query)
请参阅使用准备的语句
希望这会有所帮助。