2014-01-22 28 views
0

當調試我的程序的這部分時,它一直告訴我的prcProcedimientoAlmacenado(我的​​存儲過程)爲空。下面是下面的代碼段,該數據庫連接到我的代碼(這是一個GUI界面,我把要添加到數據庫中的值)Java中的Java Callable語句爲空

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測試它工作臺,它會添加。 (更明確,過程需要2串和一個整數,並將其添加到表「本草」

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

你是什麼意思,它一直告訴你,'prcProcedimientoAlmacenado'爲空?你在捕捉一個'NullPointerException'嗎? – andersschuller

+0

http://i.imgur.com/YJn43Gl.png調試時我得到了這個,顯然我的過程在進入該斷點時是無效的。 – ExodusLight

回答

0

嘗試使用此語法 -

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

要執行查詢更新,刪除或插入任何數據的數據庫,你必須使用 -

executeUpdate(query) 

Using Prepared Statements

希望這有助於。

+0

感謝您的幫助,但它仍然無法正常工作。同樣的結果。 http://i.imgur.com/YJn43Gl.png這就是我得到的。 – ExodusLight

+0

是的,我看到了。嘗試使用輸入參數的數量,而不是名稱。 –

+0

感謝您的幫助,非常感謝。它的工作非常完美! – ExodusLight