JDBC概述
java提供的一套操作数据库数据的应用编程接口,在用连接jdk所提供的相应实现类。
JDBC组件
- DriverManager: 一系列的数据库驱动程序,匹配连接使用通信协议从java应用程序中获取合适的数据库驱动程序。
- Connection: 所有和数据库相关的上下文操作通过该接口的实现类来提供数据库的事务操作,Statement对象等接口方法。
- Statement:使用创建该接口的对象来进行SQL语句提交到数据库
- ResultSet: 使用SQL查询数据库的结果保存在ResultSet中,是一个set集合,多条数据是通过遍历该集合来获取对应结果。
- SQLException:所有JDBC操作异常的统一处理类。
JDBC编程步骤:
1,通过JDBC连接MySQL数据库
需要下载MySQL的第三方驱动包,使用Maven添加以下依赖:
<!--JDBC驱动包依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
2,数据库连接的四个核心配置:
- 数据库驱动包的全路径:
com.mysql.cj.jdbc.Driver ==》高版本需要加cj,低版本不需要。 - 请求数据库的URL:
jdbc:mysql://localhost:3306/库名?useSSL=false&serverTimezone=UTC
mysql表示你链接的是那种类型数据库,localhost为端口号,数据库默认端口号为3306,高版本的mysql需要指定useSLL(一种网络安全协议),serverTimezone是指定时区。 - 数据库账号:root
- 数据库密码:123456
编程步骤:
- 加载数据库驱动
- 获取数据库连接
- 创建Statement对象
- 执行SQL语句
- 处理结果集
编程演示:
package com.JDBC;
import java.sql.*;
/**
* @Created with IntelliJ IDEA
* @Description:
* @Package: com.JDBC
* @author: FLy-Fly-Zhang
* @Date: 2019/7/5
* @Time: 20:17
*/
public class JDBCDemo {
public static void main(String[] args) {
try {
//加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
/**
* 获取数据库连接
* 传递参数含三个部分:
* String url: 数据库连接的URL
* jdbc: 数据库子协议 ://ip+端口/数据库名
* jdbc:jdbc ://localhost:3306/sqldemo
* String user:数据库连接用户名
* String password: 数据库密码
* 返回connection对象
*/
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sqldemo?useSSL=false&serverTimezone=UTC","root","123456");
// connection.setSavepoint("a");//设置保存点
// connection.setAutoCommit(true);//设设置是否进行手动提交
// connection.rollback();//回滚置保存点
// connection.commit();//手动提交事务
//创建 Statement对象有三种实现:
/**
* 1,创建基本的statement 对象
* java.sql.Statement
*/
Statement statement = connection.createStatement();
String sql = "select * from Student";
//4.执行SQL语句
ResultSet resultSet = statement.executeQuery(sql);
/**
* 2,创建预编译的Statement对象
* java.sql.PreparedStatement
*/
/**
* sql语句上参数通过占位符? 来代替参数
* 创建PreparedStatement对象后进行参数赋值
* 参数赋值使用statement.setString(1,"1"); //当然也可以使用对应属性函数进行赋值
* 该参数两个方法,第一个参数表示要给SQL中哪一个位置进行赋值,默认值为1
* 第二个参数为需要赋值的值。
*/
// String sql="select * from Student where SID=? and Sname=?";
// PreparedStatement statement=connection.prepareStatement(sql);
// //statement.setString(1,"1");
// statement.setInt(1,1);
// statement.setString(2,"赵雷");
// // 4.执行sql
// ResultSet resultSet=statement.executeQuery();
/**
* 3,创建带有回调功能的CallableStatement对象
* java.sql.CallableStatement对象
* 也带有预编译功能
*/
//CallableStatement callableStatement=connection.prepareCall("");
//5.处理结果集
while (resultSet.next()){
//根据对应属性名获取对应属性。
int SID=resultSet.getInt("SID");
String sname = resultSet.getString("Sname");
System.out.println("SID: "+SID+" Sname: "+sname);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}