16.数据库【JDBC】

一、JDBC操作的步骤

1)加载数据库驱动类
java.sql.DriverManager.registerDriver(new Driver()); Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例
2)打开数据库连接
调用DriverManager.getConnection(url,user,password) 获取连接的Connection对象
3)执行sql语句
Statement/PreparedStatement的实例对象调用相应的更新/查询方法执行sql语句,查询方法可以返回一个结果集对象resultSet
4)处理返回结果
resultSet 对象维护了一个指向当前数据行的游标,调用next()方法可以检查下一行是否有效
5)关闭资源

二、使用jdbc的时候,如何防止出现sql注入的问题。

什么是SQL注入
我们通过dao层操作数据库时,通常要进行SQL语句的字符串拼接,当用户输入一些特殊操作的数据时,可以直接访问数据库的数据,这就是SQL注入.

防止SQL注入:
使用Statement的子类PreparedStatement,它可以通过预编译sql语句,然后填充占位符的方式,防止sql注入问题,这是通过现将SQL语句发送到mysql服务器,进行预编译,然后再将占位符的数据发送到数据库服务器,数据库服务器将占位符中的数据当成要执行操作的数据,直接到表里面查询是否有匹配的数据.

三、是否了解连接池,使用连接池有什么好处?

数据库连接是非常消耗资源的,影响到程序的性能指标。连接池是用来分配、管理、释放数据库连接的,可以使应用程序重复使用同一个数据库连接,而不是每次都创建一个新的数据库连接。通过释放空闲时间较长的数据库连接避免数据库因为创建太多的连接而造成的连接遗漏问题,提高了程序性能。

四、你所了解的数据源技术有那些?使用数据源有什么好处?

Dbcp,c3p0.Druid
DBCP 是Apache提供的数据库连接池。tomcat 服务器自带dbcp数据库连接池。速度相对c3p0较快,但因自身存在BUG,Hibernate3已不再提供支持。
C3P0 是一个开源组织Apache提供的一个数据库连接池,速度相对较慢,稳定性还可以。hibernate官方推荐使用
Druid 是阿里提供的数据库连接池,据说是集DBCP 、C3P0等优点于一身的数据库连接池,是现在主流的数据连接池技术.