【JDBC】JDBC快速入门

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 1.概述JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC接口则通过JDBC驱动来实现真正对数据库的访问。例如,我们在Java代码中如果要访问MySQL,那么必须编写代码操作JDBC接口。注意到JDBC接口是Java标准库自带的,所以可以直接编译。而具体的JDBC驱动是由数据库厂商提供的,例如,MySQL的JDBC驱动由Oracle提供。因此,访问某个具体的数据库,我们只需要引入该厂商提供的JDBC驱动,就可以通过


1.概述


JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。


使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC接口则通过JDBC驱动来实现真正对数据库的访问。


例如,我们在Java代码中如果要访问MySQL,那么必须编写代码操作JDBC接口。注意到JDBC接口是Java标准库自带的,所以可以直接编译。而具体的JDBC驱动是由数据库厂商提供的,例如,MySQL的JDBC驱动由Oracle提供。因此,访问某个具体的数据库,我们只需要引入该厂商提供的JDBC驱动,就可以通过JDBC接口来访问,这样保证了Java程序编写的是一套数据库访问代码,却可以访问各种不同的数据库,因为他们都提供了标准的JDBC驱动:


使用JDBC的好处是:


各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发;

Java程序编译期仅依赖java.sql包,不依赖具体数据库的jar包;

可随时替换底层数据库,访问数据库的Java代码基本不变。


2.JDBC快速入门


注册驱动,加载Driver类

获取链接,得到Connection

执行增删改查,发送SQL给Mysql执行

释放资源,关闭相关链接

JDBC驱动各版本下载 下载官网最新版本即可😊


开始导包:(重要!!!)



或者更简单的,您可以使用Maven:


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>


使用JDBC时,我们先了解什么是Connection。Connection代表一个JDBC连接,它相当于Java程序到数据库的连接(通常是TCP连接)。打开一个Connection时,需要准备URL、用户名和口令,才能成功连接到数据库。

注册驱动:


import com.mysql.cj.jdbc.Driver;
// 1.注册驱动
Driver driver = new Driver();


得到与数据库jdbc_test链接:


// 2.得到与数据库jdbc_test链接
// 底层就是socket连接
String url = "jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&serverTimezone=GMT%2B8";
Properties properties = new Properties();
properties.setProperty("user","root"); // 用户名
properties.setProperty("password","root"); // 密码


执行SQL语句:


// 3.执行SQL
String sql = "insert into user values(1,'dahezhiquan','111','中国大学')";
Statement statement = connect.createStatement();
int rows = statement.executeUpdate(sql);
System.out.println(rows > 0 ? "成功":"失败");


关闭连接:


// 4.关闭链接
statement.close();
connect.close();


3.获取数据库连接的5种方式


第一种方式:上文使用driver注册驱动创建的方式

第二种方式:使用反射获取


/**
 * 使用反射加载driver类
 */
@Test
public void test1() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    Driver driver = (Driver) aClass.newInstance();
    String url = "jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&serverTimezone=GMT%2B8";
    Properties properties = new Properties();
    properties.setProperty("user","root"); // 用户名
    properties.setProperty("password","root"); // 密码
    Connection connect = driver.connect(url, properties);
}


第三种方式:使用DriverManager进行统一管理


/**
 * 使用DriverManager进行统一管理
 */
@Test
public void test2() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    Driver driver = (Driver) aClass.newInstance();
    String url = "jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&serverTimezone=GMT%2B8";
    String username = "root";
    String password = "root";
    // 注册Driver驱动
    DriverManager.registerDriver(driver);
    Connection connection = DriverManager.getConnection(url, username, password);
}


第四种方式:使用Class.forName自动完成注册驱动,进行简化


/**
 * 简化DriverManager注册
 * 使用Class.forName自动完成注册驱动,进行简化
 */
@Test
public void test3() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    String url = "jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&serverTimezone=GMT%2B8";
    String username = "root";
    String password = "root";
    Connection connection = DriverManager.getConnection(url, username, password);
}


第五种方式:使用properties配置文件读取完成连接(最推荐使用👌)


Mysql properties文件示例:


user=root
password=root
url=jdbc:mysql://localhost:3306/jdbc_test?useSSL=false&serverTimezone=GMT%2B8
driver=com.mysql.cj.jdbc.Driver


进行数据库连接操作:


/**
 * 使用properties配置文件读取完成连接
 */
@Test
public void test4() throws IOException, ClassNotFoundException, SQLException {
    Properties properties = new Properties();
    properties.load(new FileInputStream("src\\mysql.properties"));
    String user = properties.getProperty("user");
    String password = properties.getProperty("password");
    String url = properties.getProperty("url");
    String driver = properties.getProperty("driver");
    Class.forName(driver);
    Connection connection = DriverManager.getConnection(url, user, password);
}


4.ResultSet的基本使用


对于ResultSet接口,迭代器初始化时被设定在第一行之前的位置,必须调用next方法将它移动到第一行。另外,它没有hasNext方法,我们需要不断地调用next,直至该方法返回false

代码示例(演示一个查找数据的程序):👌


import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
 * ResultSet示例
 */
public class ResultSetTest {
    public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        Statement statement = connection.createStatement();
        String sql = "select id,username,password,school from user";
        // 拿到结果集
        ResultSet resultSet = statement.executeQuery(sql);
        // 循环取出数据
        while (resultSet.next()) {
            int id = resultSet.getInt(1);
            String username = resultSet.getString(2);
            String userPassword = resultSet.getString(3);
            String school = resultSet.getString(4);
            System.out.println(id + "\t" + username + "\t" + userPassword +
                    "\t" + school);
        }
        // 关闭资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
SQL Java 关系型数据库
【前端学java】JDBC快速入门
【8月更文挑战第12天】JDBC快速入门
35 2
【前端学java】JDBC快速入门
|
6月前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
68 3
|
6月前
|
Java 关系型数据库 MySQL
JDBC简介以及快速入门
JDBC简介以及快速入门
34 0
|
Java 数据库连接 数据库
JDBC快速入门(四)
JDBC快速入门(四)
|
7月前
|
SQL Java 关系型数据库
JDBC快速入门
JDBC快速入门
70 0
|
SQL Java 关系型数据库
JDBC知识【JDBC快速入门】第二章
JDBC知识【JDBC快速入门】第二章
|
SQL Java 关系型数据库
JDBC快速入门
JDBC快速入门
45 0
|
SQL Java 数据库连接
JDBC快速入门(五)--PreparedStatement用法
JDBC快速入门(五)--PreparedStatement用法
108 0
|
Java 数据库连接 数据库
JDBC快速入门(三) 代码再优化
JDBC快速入门(三) 代码再优化
|
SQL Java 关系型数据库
JDBC快速入门(二) JDBC各个类详解以及代码规范
JDBC快速入门(二) JDBC各个类详解以及代码规范
116 0

热门文章

最新文章