"本资源是一份关于JDBC开发基础的课程资料,特别关注于银行转账案例的演示,强调了在JDBC中处理事务和使用数据源创建连接的重要性。"
在JDBC(Java Database Connectivity)中,我们可以通过编程方式与各种数据库进行交互,无论这些数据库是MySQL还是Oracle。JDBC是SUN公司制定的一套标准,为Java开发者提供了一种统一的方式来访问数据库,包括定义了一系列的接口和类。JDBC的核心包含两个主要的包:`java.sql`和`javax.sql`。开发者在编写JDBC应用时,除了需要这两个包的支持,还需要引入对应数据库的驱动,例如对于MySQL,我们需要导入`mysql-connector-java-5.0.8-bin.jar`这样的数据库驱动。
要编写一个简单的JDBC程序,通常需要以下几个步骤:
1. **环境准备**:首先需要在数据库中创建相应的表并填充数据,然后在Java项目中导入对应的数据库驱动。
2. **加载驱动**:在Java代码中,通过`Class.forName()`方法加载数据库驱动,例如`Class.forName("com.mysql.jdbc.Driver")`。虽然`DriverManager.registerDriver()`也可以用来注册驱动,但在实际开发中,更推荐直接依赖于驱动的自动加载机制。
3. **建立连接**:使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码来获取数据库连接。例如:`Connection conn = DriverManager.getConnection(url, user, pass);`
4. **创建Statement**:创建一个`Statement`对象,用于执行SQL语句,如`Statement st = conn.createStatement();`
5. **执行查询**:通过`Statement`对象的`executeQuery()`方法执行SQL查询,获取`ResultSet`结果集,例如:`ResultSet rs = st.executeQuery(sql);`
6. **处理结果集**:遍历`ResultSet`,提取数据并进行处理,如打印到控制台。
7. **关闭资源**:最后,确保关闭数据库连接以及任何打开的资源,防止资源泄漏。
在上述银行转账案例中,涉及到了事务管理。在JDBC中,事务用于确保一组数据库操作要么全部成功,要么全部失败。在这个例子中,两个更新操作(从账户a减去100,向账户b增加100)应该被视为一个原子操作,即它们必须同时成功或同时失败。为了实现这一点,可以设置保存点(`Savepoint`),如`Savepoint sp = conn.setSavepoint();`,然后在出现问题时回滚到该保存点,用`conn.rollback(sp);`。一旦事务处理完毕,应当提交事务,即`conn.commit();`,以确保更改持久化到数据库。
此外,文件还提到了使用数据源(`DataSource`)来创建连接,而不是直接通过`DriverManager`。数据源是JNDI(Java Naming and Directory Interface)的一部分,它提供了一种更高效、更灵活的方式来管理和获取数据库连接。通过配置文件,我们可以将数据源的详细信息(如数据库URL、用户名、密码等)与具体数据库解耦,使得应用更具可移植性。在Java应用服务器中,数据源通常预先配置好,开发人员只需通过名称查找并获取连接即可。