【JAVA基础】- JAVA中JDBC详解
好多年没有使用过JDBC直接对数据库进行操作,最近在做基于Windchill开发时,需要使用PTC封装好的JDBC中间件,复习一下JDBC基础知识。
一、JDBC简介
JDBC(JAVA DataBase Connectivity)JAVA连接数据库一个技术规范。具体就是通过JAVA连接广泛的数据库,并执行对数据库的操作。通过JDBC技术与各类型数据库进行交互,使用Java语句发送SQL到数据库总,可以实现更安全进行各类数据库操作。可以更安全、高效的完成对数据库各类操作。
JDBC是一种连接规范并不是实现类。此规范是有Sun公司提供一套完整的接口,各数据库厂商根据自身产品特点实现自己的产品类。具体的实现过程如下图类。
二、JDBC技术相关的接口
编号 | 接口 | 功能说明 |
1 | Driver | 驱动接口,定义建立链接方式 |
2 | DriverManager | 工具类,用于管理驱动,可以获取数据库的链接 |
3 | Connection | 表示Java与数据库建立的链接对象(接口) |
4 | PrepareStatement | 发送SQL语句的工具 |
5 | ResultSet | 结构集,用于获取查询语句的结果 |
三、JDBC的编程步骤
JDBC操作数据一般分为以下六步:
1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
2.获取链接
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/cadastre","root","XXXXXX");
3.准备SQL以及发送SQL的工具
String sql="select * from datatables";
4.执行SQL
ResultSet resultSet = statement.executeQuery(sql);
5.处理结果集
while(resultSet.next()){ String value= resultSet.getString("XXX"); }
6.释放资源
四、JDBC操作示例
public void testJdbc(){ try { Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://127.0.0.1:3306/goyeerDB"; String username = "username"; String password = "password"; Connection connection= DriverManager.getConnection(url,username,password); String sql="select * from xxxtable"; PreparedStatement statement=connection.prepareStatement(sql); statement.executeUpdate(); }catch (Exception ex){ } }
public void testStatement(){ try { Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://127.0.0.1:3306/goyeerDB"; String username = "username"; String password = "password"; Connection connection= DriverManager.getConnection(url,username,password); String sql=""; Statement statement=connection.createStatement(); statement.executeUpdate(sql); }catch (Exception ex){ } }
五、JDBC功能详解
1.DriverManager驱动管理对象
- 注册驱动(MYSQL5之后直接忽略驱动)
- 注册给定的驱动程序
static void registerDriver(Driver driver);
- 写代码使用
Class.forName("com.mysql.jdbc.Driver");
- com.mysql.jdbc.Driver类中存在静态代码块
2.Connection数据库连接对象
- connection类主要有两个作用:一是可以获取执行sql的对象,二是管理事务的功能;
- 获取数据库连接对象:DriverManager.getConnection(数据库地址,用户名,密码);
- 返回值:Connection数据库连接对象;
3.Statement执行SQL语句的对象
- 获取执行者对象
- 获取普通执行者对象: Statement connection.createStatement0;
- 获取预编译执行者对象:PreparedStatement prepareStatement(String sql);
- 管理事务
- 开启事务 : setAutoCommit(boolean autoCommit);参数为false,则开启事务
- 提交事务:commit();
- 回滚事务: rollback();
- 释放对象
立即将数据库连接对象释放:void close(); - 执行DML语句:
int executeUpdate(String sql);
返回值int :返回影响的行数。
参数sql:可以执行insert、update、delete语句 - 执行DQL语句:
ResultSet executeQuery(String sql);
返回值ResultSet:封装查询的结果;
参数sql:可以执行select语句; - 释放资源
立即将数据库连接对象释放:void close();
4.ResultSet结果集对象
- resultSet.getBigDecimal();
- resultSet.getInt();
- resultSet.getShort();
- resultSet.getBoolean();
- resultSet.getString();
- resultSet.getNString();