JDBC是Java程序连接和存取数据库的应用程序接口(API),包括两个包:java.sql和javax.sql。
用JDBC访问数据库的一般步骤:
1.建立数据源
2.装入JDBC驱动程序:使用Class.forName()显示加载驱动程序
3.建立连接
4.执行SQL语句
5.检索结果和关闭连接
例如连接MySQL的步骤:
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db";
Connection con = DriverManager.getConnection(url, user, password);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CUNCUR_UPDATABLE);
其中.TYPE_SCROLL_SENSITIVE是ResultSet类的静态常量,表示可滚动并且受其他更改影响。CUNCUR_UPDATABLE表示可以更新的ResultSet对象的并发模型。
数据库的事务处理
事务是指一系列的数据库操作,要么全做,要么全不做,是一个基本逻辑单元。事务有ACID四个属性,分别是原子性、一致性、隔离性、持久性。
多个用户并发的存取数据库时就可能产生多个事务同时存取同一事务的情况。可能出现不正确的数据,破坏数据库的一致性。典型的3类数据出错:
脏读:一个事务修改了某一行数据而未提交时,另一事务读取了该行数据。假如前一事务发送了回退,则后一事务将得到一个无效的值。
不可重复读:一个事务读取某一行数据行时,另一事务同时在修改此数据行。则前一事务在重复读取此行时将得到一个不一致的数据。
幻读:一事务查询某表时,另一事务恰好插入满足查询条件的数据行。则前一事务在重复读取满足条件的值时,将得到一个或多个额外的“影子”值。
JDBC支持5个隔离级别来设置事务。
使用保存点来控制回滚的位置。
关于保存点的方法主要有3个:
setSavepoint("名称“),releaseSavepoint("名称"),rollback("名称”)
数据库的优化技术
1.编译预处理:使用PreparedStatement类
2.调用存储过程:使用SQL建立的存储过程,定义CallableStatement对象
3.采用连接池