java中访问数据库的步骤?Statement和PreparedStatement之间的区别?
参考解答
java中访问数据库的步骤如下:
1)注册驱动
2)建立连接
3)创建Statement
4)执行sql语句
5)处理结果集(若sql语句为查询语句)
6)关闭连接
PreparedStatement 称为预编译Statement,其原理是会发送参数化SQL
至数据库服务器,例如:
PreparedStatement ps = conn.prepareStatement("SELECT empno, ename FROM emp where empno=?");
ps.setInt(1, 7369);
ps.executeQuery();
在首次执行时,会将一条
SELECT empno, ename FROM emp where empno=:1
以及:1参数
的具体值发送给Oracle服务器,Oracle会将这条sql进行预编译(包括解析sql,生成执行计划等),存入共享池中。
如果再次执行
ps.setInt(1, 7499);
ps.executeQuery();
这时候会把:1参数
的新值发送给Oracle服务器,数据库服务器这边只需要将共享池中的预编译sql取出来,填充新的参数值执行即可,不需要再次经过解析、生成执行计划等步骤,效率会得到一定改善。它通常用于执行多次结构相同的SQL语句。
PreparedStatement 另外一个优点是它可以一定程度上防止SQL注入攻击。