六、Java的JDBC编程
1. JDBC必备知识
-
JDBC是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
-
JDBC工作原理:
- JDBC的优势:
- Java语言访问数据库操作完全面向抽象接口编程
- 开发数据库应用不用限定在特定数据库厂商的API
- 程序的可移植性大大增强
2. JDBC的使用
JDBC使用步骤:
-
创建数据库连接Connection
- DriverManager创建
- DataSource获取
- 区别:
- DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源
时,通过connection.close()都是关闭物理连接。 - DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接
是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将
Conncetion连接对象回收。
- DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源
-
创建操作命令Statement
- Statement
- 用于执行不带参数的简单SQL语句
- PreparedStatement
- 用于执行带或者不带参数的SQL语句
- SQL语句会预编译在数据库系统
- 执行速度快于Statement对象
- CallableStatement
- 用于执行数据库存储过程的调用
- PreparedStatement的优势:
- 参数化SQL查询
- 性能高
- SQL预编译
- 阻止常见SQL注入攻击
- 占位符不能使用多值
- 占位符下标从1开始
- Statement
-
使用操作命令来执行SQL
// 查询操作 preparedStatement.executeQuery(); // 新增、修改、删除操作 preparedStatement.executeUpdate();
-
处理结果集ResultSet
while (resultSet.next()) { int xxx = resultSet.getInt("xxx"); String yyy= resultSet.getString("yyy"); ... }
-
释放资源
try { if(resultSet != null){ resultSet.close(); } if(preparedStatement != null){ preparedStatement.close(); } if(connection != null){ connection.close(); } } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("数据库错误"); }