调试程序的这一部分时,它会一直告诉我的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
答案 0 :(得分:0)
尝试使用以下语法:
...
prcProcedimientoAlmacenado.setInt(1,i);
prcProcedimientoAlmacenado.setInt(2, 2);
prcProcedimientoAlmacenado.setString(3, nombre_Materia.getText());
...
要执行更新,删除或将任何数据插入数据库的查询,您必须使用:
executeUpdate(query)
希望这有帮助。