在java中,执行数据库查询的过程是
1.建立连接 connection
2.建立statement
3.定义sql语句 sql="select * from link"
4.执行查询 statement.executeQuery(sql)
4.结果处理
每一次访问的时候,数据库都会对传输过来的sql语句,进行编译,编译成机器可理解执行的语句再执行。
预编译的原理就是,如果用户在某个场景下,需要重复执行类似语句,就把这个语句做成含有变量的,第一次编译后,以后执行的时候每次填入变量就行了。节省编译的时间
比如我想在数据库中插入数据,
我对一个文本做循环读取,每次读取一行,插入的时候就可以使用预编译。
str = “XXX” 从文本中读取的数据
sql = “insert into tab (name) values(?)”;
Connection cn = new Conection
PrepareStatement ps = new PrepareStatement(sql)
ps.setString(1,str);
ps.executeUpdate();
感觉上执行dml操作时,插入、删除、更新操作使用预编译效果很好。我在执行dql操作进行搜索时,效率提升不是很明显。
执行搜索操作时,使用预编译的目的,主要是为了防止sql注入攻击。
举个例子,如果用户登录时,输入用户名和密码,你去验证的话,不适用预编译每次验证的时候&#x