使用步骤
- 创建数据库连接Connection
- 创建操作命令Statement
- 使用操作命令来执行SQL
- 处理结果集ResultSet
- 释放资源
JDBC常用接口和类
数据库连接Connection
- 通过DriverManager(驱动管理类)的静态方法获取:
//加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
//创建数据库连接
Connection connection = DriverManager.getConnection(jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8);
- 通过DataSource(数据源)对象获取:
DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();
以上两种方式的区别:
- DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源
时,通过connection.close()都是关闭物理连接。 - DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接
是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将Conncetion连接对象回收。
Statement对象
JDBC API中主要提供了三种Statement对象:
- Statement:
- 用于执行不带参数的简单SQL语句
- PreparedStatement:
- 用于执行带或者不带参数的SQL语句
- SQL语句会预编译在数据库系统
- 执行速度快于Statement对象
- CallableStatement:
- 用于执行数据库储存过程的调用
PreparedStatement对象
PreparedStatement特性:
- 参数化SQL查询
- 性能比Statement高
- SQL预编译
- 阻止常见SQL注入攻击
- 占位符:? 下标从1开始
- 占位符不能使用多值
常用方法:
方法声明 | 作用 |
---|---|
int excuteUpdate(String sql) | 可执行增、删、改,返回执行受到影响的行数 |
ResultSet executeQuery(String sql) | 执行SQL查询,并返回ResultSet对象 |
boolean execute(String sql) | 可执行任何SQL语句,返回一个布尔值,表示是否返回ResultSet(只有执行查询才为true) |
ResultSet对象
ResultSet对象被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。
常用方法:
方法声明 | 作用 |
---|---|
boolean next() | 游标下移,判断该行是否有结果 |
xx.getXx(int index) | 获取该行结果中某个字段的数据,index为编号,index从1开始 |
xx.getXx(String name) | 获取该行结果中某个字段的数据,name为字段名 |