我把所有的问号都换成常量写在SQL语句里面就正常,写成"?",就报错,都找了一天啊,大家帮忙看下吧.

解决方案 »

  1.   

    你再接着把
    memPst.setObject(1, resultSet.getString(1));
                        memPst.setObject(2, resultSet.getInt(5));
                        memPst.setObject(3, resultSet.getInt(4));
                        memPst.setObject(4, resultSet.getInt(4));
                        memPst.setObject(5, resultSet.getString(1));
                        memPst.setObject(6, resultSet.getInt(5));
    也写死了。接着测
      

  2.   

    呵呵,楼上的兄弟说的方法我测试过了,还是有问题,我写死的时候就没有问题,
    不过我换了种方式,搞定了.memSql = " merge into membernum using (select count(id) count from membernum where phone = " +resultSet.getString(1)+
    " and ringid = "+resultSet.getInt(5)+" ) num2 on (num2.count <> 0 ) " +
    "when matched then update set balance = balance + "+resultSet.getInt(4)+", totalnum = totalnum + " + resultSet.getInt(4) +
    "when not matched then insert (id, phone,ringid,totalnum,balance)" +
    " values (SEQ_MEMBERINCOME.nextval, "+resultSet.getString(1)+" , "+resultSet.getInt(5)+" , "
    +resultSet.getInt(4)+" , "+resultSet.getInt(4)+")" ;
    memPst = connection.prepareStatement(memSql);
    memPst.execute(memSql);
      

  3.   

    http://topic.csdn.net/t/20020514/13/720747.html
      

  4.   

    可能是某个值出现null。
    另外,不建议都用setObject
    你试试看用对应的比如setString,setInt,之类的,oracle的类型转换有时候不是像你想的那样,Object不能搞定一切。
      

  5.   

    难道是我眼花..
       只看到3个 ? 却set了6个参数
      

  6.   

    1. SQL语句中使用?作为参数的占位符
    2. 通过Statement的set方法进行赋值
    3. 调用execute
    4. 通过resultset的get获取结果你的SQL种有3个问号,即需要set 3 个参数,目前的代码中set了6个参数,所以执行时报错。