1 关于执行计划
(1)任何sql语句执行过程都是先编译成“执行计划”再执行“执行计划”,类似于java文件执行过程先编译成class文件在执行class文件
(2)一条sql语句对应一个执行计划。数据库为了优化性能,在sql语句相同的时候,会对执行计划进行宠用,执行计划编译较慢,重用执行计划可以提高数据库的性能。
(3)数据库只在sql语句完全一样的情况下才会重用执行计划。
INSERT INTO demo (id,name) VALUES (1,'java');
INSERT INTO demo (id,name) VALUES (2,'PHP');
为了提高性能,就要减少sql语句的变更,让他重用执行计划。因此就引入了更为具体的PreparedStatement接口。
2 接口PreparedStatement
PreparedStatement:预编译语句对象,用于执行带参数的预编译执行计划
(1)使用在DML语句中
public static void main(String[] args) {
//1.获取连接对象
Connection c = DBUtils.getConnection();
try{
// 2.定义SQL语句
String sql = "INSERT INTO demo (id,name) VALUES (?,?)";
//3.预编译语句对象,将sql语句发送给数据库,创建执行计划
PreparedStatement ps = c.prepareStatement(sql);
//4.为执行计划参数