| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2391 人关注过本帖
标题:JDBC 中利用存储过程插入数据怎么参数传不进来?(有没有人会的,帮帮忙,困 ...
只看楼主 加入收藏
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
JDBC 中利用存储过程插入数据怎么参数传不进来?(有没有人会的,帮帮忙,困扰了好几天了。谢谢!
    public static void main(String[] args){
        ReplyEmp emp=new ReplyEmp();
        emp.setInviationid(1);
        emp.setFloor(1);
        emp.setNickname("张三");
        emp.setTonickname("李四");
        emp.setTime(null);
        emp.setDate(null);
        emp.setContent("说得好!");
        emp.setTohost(true);
        ReplyDaoImpl impl=new ReplyDaoImpl(dbc.getConnection());
        try {
            System.out.println(impl.doCreateReply(emp));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    @Override
    public Boolean doCreateReply(ReplyEmp reply) throws Exception {
        
        
        String sql= "DROP PROCEDURE IF EXISTS reply_insert;"+     //存在储存过程就删除
                    "DELIMITER $$ "+    //重置自定义的sql语句结束标记
                    "CREATE PROCEDURE reply_insert(IN r_inviationid int," +
                    "IN r_floor int,IN r_nickname varchar(45),IN r_tonickname varchar(45)," +
                    "IN r_time time,IN r_date date,IN r_content varchar(45),IN r_tohost tinyint(4)) "+
                    "BEGIN "+
                    "INSERT INTO reply (`inviationid`,`floor`,`nickname`,`tonickname`,`time`," +
                    "`date`,`content`,`tohost`) " +
                    "VALUES (r_inviationid,r_floor,r_nickname,r_tonickname," +
                    "r_time,r_date,r_content,r_tohost);"+
                    "END $$ "+
                    "DELIMITER ;";    //设置回默认的sql语句结束标记        
        this.cstmt=this.conn.prepareCall("{call reply_insert(?,?,?,?,?,?,?,?)}");
        this.cstmt=this.conn.prepareCall("{call reply_insert()}");
        this.cstmt.setInt(1, reply.getInviationid());
        this.cstmt.setInt(2, reply.getFloor());
        this.cstmt.setString(3, reply.getNickname());
        this.cstmt.setString(4, reply.getTonickname());
        this.cstmt.setTime(5, reply.getTime());
        this.cstmt.setDate(6, reply.getDate());
        this.cstmt.setString(7, reply.getContent());
        this.cstmt.setBoolean(8, reply.getTohost());    //1表示true,0表示false      
        if(this.cstmt.executeUpdate()>0){
            return true;   //插入成功
        }
        return false;   //插入失败
    }



报这样的错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Incorrect number of arguments for PROCEDURE forum.reply_insert; expected 0, got 8
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
    at com.mysql.jdbc.CallableStatement.executeUpdate(CallableStatement.java:984)
    at com.forum.dao.impl.ReplyDaoImpl.doCreateReply(ReplyDaoImpl.java:89)
    at com.forum.dao.impl.ReplyDaoImpl.main(ReplyDaoImpl.java:36)
搜索更多相关主题的帖子: public null 
2014-10-18 15:46
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:5 
mysql没有boolean类型的吧
2014-10-18 19:24
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 2 楼 hhwz
可以用tinyint存储传进来的boolean型的,   有没有谁知道参数为什么传不进来啊?
2014-10-18 23:23
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:0 
this.cstmt=this.conn.prepareCall("{call reply_insert(?,?,?,?,?,?,?,?)}");
 this.cstmt=this.conn.prepareCall("{call reply_insert()}");
为什么会有2个这个?上面是8人参数 下面是没有参数的 而且 生效的也是下面这个
      
2014-10-19 14:48
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 4 楼 hhwz
哦,那个用来试着看不用传参数会不会报那样的错(结果不用参数的可以插入成功,而用上一个有参数的却报那些错了!!),那行无参数的忘记注释掉,
2014-10-19 20:00
szgg520
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:79
专家分:307
注 册:2011-6-13
收藏
得分:5 
把SQL语言打印出来,就可以看出来了,

[url=http://www.]深圳复印机出租[/url]
2014-10-20 09:09
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 6 楼 szgg520
输出了是这个com.mysql.jdbc.JDBC4CallableStatement@579bb367: CALL reply_insert(1,1,'张三','李四',null,null,'说得好!',1)       那就是参数已经传进来了,报错说这行“if(this.cstmt.executeUpdate()>0)”有问题,  难道是提交的方法不是用executeUpdate()?     那是用什么呢?    网上查的也都是用executeUpdate()啊
2014-10-20 10:36
liucao
Rank: 10Rank: 10Rank: 10
来 自:恶灵之城
等 级:贵宾
威 望:13
帖 子:538
专家分:1575
注 册:2014-8-6
收藏
得分:5 
下面是本人使用时的代码,一理通百理融,可以参考下
public static Connection getConnection() {
        // 第一步:加载MySQL的JDBC的驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");

            // teathers_information是你需要在mysql客户端创建的数据库名
            // 用户名和密码是你在创建连接的时候定的
            String url = "jdbc:mysql://localhost:3306/teas";
            String username = "root";
            String password = "123456";
            // 第二步:创建与MySQL数据库的连接类的实例
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

one car come one car go ,two car peng peng people die.
2014-10-20 21:44
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 8 楼 liucao
问题是不是在JDBCConnection啊!   JDBC完全可以连接上。
2014-10-20 21:58
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:5 
回复 8 楼 liucao
你好像没使用“存储过程”
2014-10-20 22:03
快速回复:JDBC 中利用存储过程插入数据怎么参数传不进来?(有没有人会的,帮帮 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018343 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved