{   ...
    
    /**
     * 省略获取连接数据库的代码
     */   //下面一行是向用户表中部分字段插入数据,我在测试中运行成功,这里就不写出来。
   ps=con.prepareStatement(insert into user(...) values(...));
   /**
    *  省略一些类似ps.setInt(1,"");
    */
   if(ps.executeUpdate()>0){
       ps=con.prepareStatement("insert into information(...) values(...)"); 
    /**
     *省略一些类似ps.setInt(1,"");
     */  
   }
   ...
}
问题来了,两条插入语句分别测试都成功了。弄成上面那种,就出现异常了:
No value specified for parameter 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2578)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2554)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2401)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
这个问题怎么解决?是不是不能这样向两张表中插入数据啊?跪求高手解答

解决方案 »

  1.   

    检查下代码吧. 看看具体是哪一个sql语句执行后报错的.
    注意下参数类型是否匹配, setInt那么值肯定得int, 数据库该字段也应该为int.
    然后参数个数是否正确.后面set参数值的个数是否和上面sql语句里面?号数量一致.
      

  2.   

    No value specified for parameter 1
    很明显是第2个参数设置有问题。把你具体的SQL语句发出来看看、
      

  3.   

    肯定不是撒。try{
        conn = ds.getConnection();
        conn.setAutoCommit(false);
        PreparedStatement pstmt1 = conn.prepareStatement(SQL_INSERT1);
        PreparedStatement pstmt2 = conn.prepareStatement(SQL_INSERT2);
        pstmt1.executeUpdate();
        pstmt2.executeUpdate();
        conn.commit();
    } catch (SQLException e) {
        conn.rollback();
    }
      

  4.   

    No value specified for parameter 1
    第一个对象没值么,有可能是创建的最后一个prestmt对象
    单步走一下循环呗
      

  5.   

    把整个代码发出来看看吧.从定义SQL_INSERT1开始到后面的pstmt1.setParameter那边都显示出来看看.
    这种算是RunetimeException,需要看到具体情况.
      

  6.   

    我找到问题的所在了,已经解决了。有一条IF语句的位置放错。sql语句没问题。谢谢大家的答复。