JDBC 简明教程
2023-09-14 08:57:32 时间
虽然在平时的开发过程中我们不会直接使 JDBC 的 API 来操作数据库,但是 JDBC 是大多数 ORM 框架的基础。只有掌握了 JDBC 的使用才能更好的掌握 ORM 框架。本篇博客就对 JDBC 做下介绍,以及使用 JDBC 操作数据库的一般流程。
JDBC(Java 数据库连接)是 Sun 公司提供的一组操作数据库的接口。各个数据库厂商提供具体的数据库驱动实现类。开发者就可以通过统一的 JDBC API 来访问各类数据库了。JDBC 可以帮我们完成下面三件事:
- 建立数据库连接;
- 执行各类 SQL 语句;
- 获得 SQL 语句执行的结果。
常用类
- DriverManager:主要使用该类获取数据库连接对象;
public static Connection getConnection(String url,String user, String password) throws SQLException
- Connection:代表数据库连接对象,每个对象代表一个数据库物理连接,在操作数据库之前必须先获得该对象;该接口常用的方法如下:
//返回一个 Statement 对象
Statement createStatement() throws SQLException;
//返回一个预编译的 Statement 对象,也就是先将 Sql 语句提交到数据库进行预编译
PreparedStatement prepareStatement(String sql) throws SQLException;
//该对象用于调用存储过程
CallableStatement prepareCall(String sql) throws SQLException;
另外 Connection 对象还提供了如下对象来对事务进行操作:
//设置回滚点
Savepoint setSavepoint() throws SQLException;
Savepoint setSavepoint(String name) throws SQLException;
//设置隔离级别
void setTransactionIsolation(int level) throws SQLException;
//设置回滚点
void rollback() throws SQLException;
void rollback(Savepoint savepoint) throws SQLException;
void setAutoCommit(boolean autoCommit) throws SQLException;
//提交事务
void commit();
- Statement:用于执行 SQL 语句的工具接口,可以执行 DDL、DML 和查询语句,常用方法如下:
//执行查询 SQL,并返回结果集
ResultSet executeQuery(String sql) throws SQLException;
//执行 DML,并返回影响的条数,也可以执行 DDL,返回0
int executeUpdate(String sql) throws SQLException;
//可以执行所有 SQL,如果 SQL 是查询语句并能查到结果返回 true,否则返回 false
boolean execute(String sql) throws SQLException;
- PreparedStatement:预编译的 Statement,不需要每次去数据库编译 SQL 语句,只要给 SQL 执行参数就可以了 。
- ResultSet:结果集。
JDBC 编程步骤
/**
* step1:加载驱动;
* step2:获得连接;
* step3:创建 Statement;
* step4:执行语句,获取结果集;
* step5:处理结果集;
* step6:关闭资源(ResultSet、Statement和Connection)
*/
事务处理
//开启事务
setAutoCommit(fasle);
//遇到异常回滚
//提交事务
commit();
数据库连接池
每次创建数据库的连接是比较耗费资源的,所以将数据库连接资源缓存起来,重复利用。
- DBCP
- C3P0
- Durid
JDBC列子代码
下面是一个最简单的 JDBC 列子代码,是一个最典型的 JDBC 查询过程。
public class JDBCUtil {
public static final Logger log = LoggerFactory.getLogger(JDBCUtil.class);
public static final String URL = "jdbc:mysql://127.0.0.1/mysql";
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String USERNAME = "root";
public static final String PASSWORD = "root";
private Connection getConnection(){
Connection conn = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (ClassNotFoundException e) {
log.error("get connection exception",e);
}catch (SQLException e) {
log.error("get connection exception",e);
}
return conn;
}
public void queryAndEchoUser(String userName){
String sql = "select * from user where user = ?";
Connection connection = getConnection();
PreparedStatement preparedStatement;
ResultSet resultSet=null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,"root");
resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
log.info("host-->"+resultSet.getString(1));
}
} catch (SQLException e) {
//
}finally {
//close resultSet
//close preparedStatement
//close connection
}
}
}
使用 Apache 的 JDBC 工具类
上面的代码略微显得复杂,特别是将查出来的结果集转换为 Bean 对象,关闭资源那块。使用 Apache 提供的工具类能适当减少这样的模板代码:
public class DbUtilsUseBeanMySQL {
public static void main(String[] args) {
Connection conn = null;
String jdbcURL = "jdbc:mysql://localhost/octopus";
String jdbcDriver = "com.mysql.jdbc.Driver";
String user = "root";
String password = "root";
try {
DbUtils.loadDriver(jdbcDriver);
conn = DriverManager.getConnection(jdbcURL, user, password);
QueryRunner qRunner = new QueryRunner();
List beans = (List) qRunner.query(conn, "select id, name from animals_table",
new BeanListHandler(Employee.class));
for (int i = 0; i < beans.size(); i++) {
Employee bean = (Employee) beans.get(i);
bean.print();
}
} catch (SQLException e) {
// handle the exception
e.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
}
当然以上只是 DbUtil 最简单的使用,这个工具还支持数据源,事务管理等高级特性,需要的时候可以查询 API 使用。
公众号推荐
欢迎大家关注我的微信公众号「程序员自由之路」
相关文章
- 在虚拟机上安装使用LoadRunner教程
- 如何激活成功教程SQLyog 企业版,无限期试用[通俗易懂]
- CAD2020软件安装教程-cad软件全版本下载地址
- YonBuilder 应用构建教程之移动端扩展
- 图像编辑软件Photoshop最新中文版,ps2023软件安装教程下载
- 数据库MySQL 数据库连接:使用JDBC实现(用jdbc连接mysql)
- JDBC简易教程:连接SQL Server(jdbc连接sqlserver)
- MySQL JDBC 配置:一步一步构建持久连接。(mysql的jdbc配置)
- 快速使用JDBC连接SQL Server数据库(jdbc连接sqlserver数据库)
- 使用JDBC连接MySQL的方法及步骤(jdbc连mysql)
- 如何使用手机安装redis一份简易教程(手机redis使用教程)
- JDBC在MySQL中如何使用(mysql中jdbc在哪)
- JDBC操作Oracle新增数据实现指南(Jdbc新增oracle)
- 驱动使用JDBC加载Oracle驱动实现数据库交互(jdbc加载oracle)
- driver使用Oracle JDBC Driver更新数据库连接(oracle修改jdbc)
- Oracle JDBC库快速构建高效的数据存取应用(oracle jdbc库)
- 深入理解Oracle数据库的JDBC连接包(oracle jdbc包)
- Oracle 8搭载新型JDBC驱动开启新篇章(oracle8 jdbc)
- MacOS系统安装golang教程
- Windows下编译安装php扩展eAccelerator教程