jdbc的PreparedStatement添加数据时,添加的数据值都成了问号

用jdbc的PreparedStatement对象执行插入语句(代码如下),把参数都设置成了?,也用set给了值,但执行结果是插入的值除了年龄外都成了问号,然后我用Statement又执行了一遍,但结果和PreparedStatement,感觉应该是哪一处的语法写错了

String sql2 = "INSERT INTO student VALUES(?,?,?);";

PreparedStatement preparedStatement2 =connection.prepareStatement(sql2);
preparedStatement2.setString(1,"李华");
preparedStatement2.setString(2,"男");
preparedStatement2.setInt(3,20);

preparedStatement2.executeUpdate();

考虑下面两种解决办法:

1、你的id是不是自增主键,如果是的话,这样写:

PreparedStatement ps = conn.prepareStatement(
         "INSERT INTO students (grade, name, gender) VALUES (?,?,?)",
         Statement.RETURN_GENERATED_KEYS));


2、第二种写法,preparedStatement2在set的时候写成:

preparedStatement2.setObject('key','value');

sql2里面的sql语句不用写分号 把分号去掉试试