String sql="insert into tablename(a,b,c) values(?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); //执行查询 pstmt.executeQuery(sql); //执行更新 pstmt.executeUpdate(sql);
原因:PreparedStatement在创建时已经缓存了sql语句,以便后面设置参数,所以你在执行查询或更新时在附加sql语句,像这样:pstmt.executeQuery(sql),就不会设置参数,导致报错!正确的应该pstmt.executeQuery()。