用Statement可以操作数据库PrepareStatement不行吗,为什么,看如下代码。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbeTest {
public static void main(String[] args) throws Exception{

  Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb", "root", "362324FJF");
PreparedStatement stat = conn.prepareStatement("insert into user(id,salary,age) values(?,?,?)");


stat.setInt(1, 1);
stat.setDouble(2, 100);
stat.setInt(3, 12);
ResultSet rs = stat.executeQuery("select * from user");
while(rs.next()){
        System.out.println(rs.getObject("id"));
        System.out.println(rs.getObject("salary"));
        System.out.println(rs.getObject("age"));
    }
    rs.close();
    stat.close();
    conn.close();

}

}

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbeTest {
  public static void main(String[] args) throws Exception{

      Class.forName("com.mysql.jdbc.Driver");


        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb", "root", "362324FJF");

        Statement stat = conn.createStatement();

        stat.executeUpdate("insert into user(id,salary,age) values(50,20,30)");

        ResultSet rs = stat.executeQuery("select * from user");
        while(rs.next()){
            System.out.println(rs.getObject("id"));
            System.out.println(rs.getObject("salary"));
            System.out.println(rs.getObject("age"));
        }
        rs.close();
        stat.close();
        conn.close();
  }

}





 stat.setInt(1, 1);
stat.setDouble(2, 100);
stat.setInt(3, 12);
stat.executeUpdate();//增加这句

你是说你用PreparedStatement没有插入成功是吗?

你的第一段代码中没有执行真正的插入操作,你虽然设置了参数,但是你使用的是查询方法,跟你前面设置的没有关系,你设置完毕后需要执行:
stat.executeUpdate();
执行这句成功后才能完成你前面定义的sql语句。