在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。
第一:
prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率。
createStatement不会初始化,没有预处理,每次都是从0开始执行SQL
第二:
1.prepareStatement可以替换变量
在SQL语句中可以包含“?”,可以用ps=conn.prepareStatement("select * from tableName where id=?");
int id=20;
ps.setInt(1, id);
rs = ps.executeQuery();
可以把“?”替换成变量(“?”在这里启动占位作用)。
2.而Statement只能用
int id=20;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tableName where id="+id);
来实现(这样容易造成sql注入)。