Java中的mysql可召唤的语句为null



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

请参阅使用准备的语句

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新