第1章 jdbc
1.1 JDBC概念
java data base connectivity java连接数据库技术。
也就是说,有了jdbc之后,我们就可以使用java代码来操作数据库。
1.2 开发步骤
1. 注册驱动
DriverManager.registerDriver(new Driver());//不推荐,会注册两次
Class.forName(“com.mysql.jdbc.Driver”);//推荐,会注册1次
2. 获得连接
Connection con = DriverManager.getConnection(String url, String uesrname, String password);
url:数据库地址。格式有要求。jdbc:mysql://ip地址:端口号/数据库名
username:用户名
password:密码
3. 获取SQL语句执行平台
Statement st = con.createStatement();
4. 执行sql语句
int row = st.executeUpdate(String sql);//只能操作增删改语句,不能操作查询,返回值为受影响的行数
ResultSet rs = st.executeQuery(String sql);//执行查询
5. 处理结果集
一般增删改是不需要处理结果集
while(rs.next()) {
一顿rs.getXXX(String 列名);
rs.getXXX(int 列索引);//列索引从1开始
}
6. 释放资源
rs.close();
con.close();
st.close();
1.3 SQL注入攻击
我们对sql语句进行一定格式的拼接后,就可以达到条件恒为true的效果
使用预编译.
使用连接 con.prepareStatement(String sql);对sql语句进行预编译
1.4 预编译好处
1. 防止sql注入
2. 提高效率
第2章 DBUtils
2.1 概念
对jdbc进行了一层薄薄的封装
2.2 三个核心类
QueryRunner:用来执行SQL语句
ResultSetHandler:用来查询后处理结果集
DbUtils:释放资源
2.3 QueryRunner常用方法
update(Connection con,String sql,Object… args);执行增删改操作。con是连接,sql是sql语句 args是要替换占位符的参数
query(Connection con,String sql, ResultSetHandler<T> rsh,Object… params);执行查询操作,根据传入的ResultSetHandler实现类的不同,会有不同的返回值类型
2.4 ResultSetHandler结果集
ArrayHandler:将查询到的第一行数据封装到一个Object数组中,返回值类型是一个 Object[]
ArrayListHandler:将查询到的每一行数据封装到一个各自的Object数组中,然后再把这些数组封装到一个List集合中.返回值类型是List<Object[]>
BeanHandler:将查询到的第一行数据封装到一个javaBean中,返回值类型是一个javaBean类型
BeanListHandler:将查询到的每一行数据封装到一个javabean中,然后再将多个javabean封装到一个List集合
ColumnListHandler:将查询到的某一列的数据封装到一个List的集合。
ScalarHandler:对于结果只有一个数据的,可以使用此结果集
MapHandler:将查询到的第一行数据封装到Map集合中,key是列名,value第一行此列对应的值.
MapListHandler:将查询到的每一行数据封装到多个Map集合,然后再将多个Map集合封装到一个List集合中
第3章 连接池
3.1 概念
预先创建很多个连接,放入到一个容器中,用的时候拿出来,用完再放回去
3.2 常见的连接池
dbcp,c3p0
3.3DBCP 使用步骤
1. 创建BasicDataSource对象
2. 调用setXXX方法设置信息。包括驱动,url,username,password
3. 调用getConnection获得连接