不解,求教,多谢。JUnit进行单元测试时。
代码如下:Class.forName("com.mysql.jdbc.Driver");
        Connection conn=DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/xxx", "root", "");
                
        PreparedStatement stmt=conn.prepareStatement("insert into PERSONNEL(ID,FIRSTNAME,LASTNAME,AGE) values(?,?,?,?)");
        stmt.executeUpdate();
        conn.close();从prepareStatement()方法中抛出。异常如下:java.lang.NullPointerException
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:578)
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:516)
at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:3758)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:267)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:435)
at com.mysql.jdbc.ServerPreparedStatement.asSql(ServerPreparedStatement.java:360)
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:516)
at com.mysql.jdbc.ServerPreparedStatement.toString(ServerPreparedStatement.java:2433)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:267)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:417)
at com.mysql.jdbc.ServerPreparedStatement.<init>(ServerPreparedStatement.java:290)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4656)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4573)
         at 我的类中该行:PreparedStatement stmt=conn.prepareStatement("insert into PERSONNEL(ID,FIRSTNAME,LASTNAME,AGE) values(?,?,?,?)");

解决方案 »

  1.   

    PreparedStatement stmt=conn.prepareStatement("insert into PERSONNEL(ID,FIRSTNAME,LASTNAME,AGE) values(?,?,?,?)");
    这段代码下面不是还要有
    stmt.setInt(1,ID),stmt.setString(2,FIRSTNAME).....等的吗?
      

  2.   

    我明白。问题是在
    PreparedStatement stmt=conn.prepareStatement("insert into PERSONNEL(ID,FIRSTNAME,LASTNAME,AGE) values(?,?,?,?)");
    这句出现的 后面的没执行到。网上查到说3.0的版本没这个问题,3.x似乎有。我想知道5.x的版本有朋友遇到过没有,怎么解决?