JDBC
一、JAVA Datebase Connectivity(JDBC):JAVA访问数据库解决方案。
1.JDBC是一组接口,规定了JAVA访问数据库的规则,提供一系列用于操作数据库的方法。
2.JDBC是访问所有数据库系统的规范。
3.所有的实现都由数据库厂商来实现。这些接口的实现类叫做驱动。
4.JDBC提供了同一的访问数据库的操作界面。
二、JDBC工作过程:
1.加载驱动,建立连接。
Class.forName("DriverName");
2.创建语句对象。
Conncection connection=DriveManager.getConnection();
其中需要三个参数:
⑴.数据库的连接地址 url
⑵.数据库用户名
⑶.用户名相应的密码
3.执行SQL语句。
Statement
Connection.createStatement();
4.处理结果集。
insert,update,delete DML:executeUpdate()
select DQL:executeQuery()
create DDL:execute()
5.关闭连接。
三、实例:
1.发送SELECT语句得到结果集,见JDBC_Demo1.doc。
2.发送DDL语句,见JDBC_Demo2.doc。
3.发送DML语句,见JDBC_Demo3.doc。
4.事务处理,见JDBC_Demo4.doc。
5.注册、登陆系统,见Register.doc 、 Login.doc 。
6.为发送SQL语句execute(String sql)等赋值SQL语句时,sql中不加分号结束SQL语句。
四、PreparedStatement预处理语句对象,是Statement的子接口。只要执行动态SQL,必须使用PreparedStatement。
1.不会出现SQL注入。
2.批量执行相同语义,不同内容的SQL语句,性能更高。Oracle中,在编译SQL语句后,会生成执行计划,执行计划放在缓存中,如果下次遇到相同的SQL语句,就会调用缓存中的相同的执行计划,执行SQL语句。PreparedStatement语句在执行execute方法时,在Oracle中生成的执行计划为带“?”的执行计划,当“?”值改变时,Oracle的执行计划不改变,也就是同一语义的SQL语句,使用PreparedStatement只生成一条执行计划,使用这条执行计划反复执行“?”值不同的SQL语句。(而Statement语句对象每次都发送一条不同的SQL语句时,Oracle每次都要生成不同的执行计划,取执行SQL语句。预处理语句就是帮助Oracle省去了重复生成执行计划这个步骤,减少开销,提升性能。)
3.使用它执行动态SQL,SQL语句不再需要将SQL命令和JAVA变量拼接。而是使用“?”代替JAVA变量。
例如:INSERT INTO emp(empno,ename) VALUES(? , ?);
在SQL语句执行之前,通过setTypeof?(int ?_loc , Typeof? ?_value)方法,装载“?”的值。
4.在传入参数时,数据库里设置了默认值,但是使用PreparedStatement的setInt/setDouble方法时不能传入空值,可以使用setObject方法来传入值,如果传入的值为空时,即为默认值。
5.实例,见PreparedStatement().doc。
五、配置文件、连接池:DBCP-database connection pool
1.实例,见JDBC_ConnectionPool_Util.doc 。
六、JDBC中的批量操作,在数据量非常庞大的时候使用,可以提升效率。
1.使用普通处理execute(),每次调用execute()方法,JAVA程序都会与数据库服务器进行一次网络交互。
2.使用批处理executeBatch(),将SQL语句中的”?“替换的值,添加到批处理中缓存,等待一起发送。大量尖山、哦与数据库服务器网络交互的次数,提高JDBC批量处理数据的效率。在使用批处理时,如果数据量比较大,想要随时执行,并清空批处理的缓冲区,可使用clearBatch()方法,放在批处理命令executeBatch()后刷新缓冲区。
3.实例,见Batch.doc。
七、获取插入、修改或删除的行的值。
1.实例,见PreparedStatement(sql,columns).doc。
八、获取结果集元数据
1.数据库数据:通过查询,从数据库表中获取的数据。
2.结果集元数据:描述数据的数据。例如:结果集中有多少字段,每个字段的名字,字段类型。
JDBC总结
一、JDBC概念:
1.JAVA提供访问数据的一套标准的解决方案。
2.JDBC包含一组接口,由数据库厂商分别提供针对各自数据库软件管理系统的实现类——驱动程序。
3.这组接口规定了访问数据库标准流程和操作方法。
二、标准流程
三、结果集处理
四、语句对象
1.Statement:普通语句对象
2.PreparedStatement:预处理语句对象
3.CallableStatement:调用存储过程
五、JDBC中的连接池使用(DBCP)
六、Properties:属性文件
七、JDBC中的事物处理
八、JDBC中的批处理
九、ResultSetMetaData:结果集元数据
十、DAO的规范书写