JDBC
概念和本质
概念
JDBC:Java DataBase Connectivity , Java数据库连接,Java语言操作数据库
本质
其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
快速入门
步骤
-
导入驱动jar包
1. 复制jar包到项目的libs(自己建)目录下 (方便管理) 2. 右键libs ---> Add As Library
-
注册驱动
-
获取数据库连接对象 Connection
-
定义SQL
-
获取执行SQL语句的对象 Statement
-
执行SQL,接收返回值
-
处理结果
-
释放资源
代码实现
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象 Connection
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","root");
//4. 定义SQL语句
String sql = "update account set balance = 500 where id = 1";
//5. 获取执行SQL语句的对象 Statement
Statement stmt = conn.createStatement();
//6. 执行SQL,接收返回值
int count = stmt.executeUpdate(sql);
//7. 处理结果
System.out.println(count);
//8. 释放资源
stmt.close();
conn.close();
详解各个对象
-
DriverManager:驱动管理对象
功能: 1.注册驱动:告诉程序该使用哪个数据库驱动jar
2.获取数据库连接
-
Connection:数据库连接对象
-
Statement:执行sql的对象
-
ResultSet:结果集对象:封装查询结果的
-
PreparedStatement:执行sql的对象
1. sql注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 2. 解决sql注入问题:使用PreparedStatement 对象来解决 3. 预编译的sql:参数使用 ?作为占位符 4. 1. 导入驱动jar包 2. 注册驱动 3. 获取数据库连接对象 Connection 4. 定义SQL *注意:sql的参数使用?作为占位符 5. 获取执行SQL语句的对象 PreparedStatement *Connection.prepareStatement(String sql) 6. 给?赋值 *方法:setXxx(参数1,参数2) 参数1:?的位置编号 从1开始 参数2:?的值 7. 执行SQL,接收返回值,不需要传递sql语句 8. 处理结果 9. 释放资源 5. 注意:后期都会使用 PreparedStatement来完成增删改查的所有操作 可以防止sql注入 效率更高
抽取JDBC工具类 :JDBCUtils
目的:简化书写
分析:
-
注册驱动抽取
-
抽取一个方法获取连接对象
-
抽取一个方法释放资源
JDBC控制事务
数据库连接池
概念
数据库连接池其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
优点
- 节约资源
- 用户访问高效
实现
C3P0:数据库连接技术
Druid:数据库连接池实现技术(阿里巴巴提供)
Spring JDBC
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象,简化JDBC的开发