存储过程如下.
DELIMITER $$DROP PROCEDURE IF EXISTS `tennis`.`sp_k`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_k`(in i_f1 integer)
begin
    insert into tz values(i_f1);
end$$DELIMITER ;java代码如下.
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        String conUrl="jdbc:mysql://localhost:3306/tennis";
        Connection con=DriverManager.getConnection(conUrl,"root","admin");
        CallableStatement cstmt=con.prepareCall("{call sp_k(?)}");
        cstmt.setInt("i_f1",333);
        boolean hadResult=cstmt.execute();
        if(hadResult){
            System.out.println("aa");
        }
        cstmt.close();
        con.close();程序没有出现什么异常错误..不过数据库里又没有添加到数据...不知道是什么原因.

解决方案 »

  1.   

    当前的用户是否具有存储过程的CREATE 权限?
      

  2.   

    是的.我是用root进去创建的.创建是成功.
      

  3.   

    你的java代码有问题
    Class.forName("com.mysql.jdbc.Driver").newInstance();怎么会是这样写呢?
      

  4.   

    你参考一下这里:http://blog.csdn.net/ruanruoshi/archive/2006/06/01/767493.aspx
      

  5.   

    ???? cstmt.setInt( "i_f1 ",333); 试试这样
     cstmt.setInt( 1,333); 
      

  6.   

    本帖最后由 yueliangdao0608 于 2007-12-27 21:28:34 编辑