Java中的MySQL Callable语句为null

时间:2014-01-22 18:50:50

标签: java mysql sql callable

调试程序的这一部分时,它会一直告诉我的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

1 个答案:

答案 0 :(得分:0)

尝试使用以下语法:

...
prcProcedimientoAlmacenado.setInt(1,i);
prcProcedimientoAlmacenado.setInt(2, 2);
prcProcedimientoAlmacenado.setString(3, nombre_Materia.getText());
...

要执行更新,删除或将任何数据插入数据库的查询,您必须使用:

executeUpdate(query)

请参阅Using Prepared Statements

希望这有帮助。