【JDBC】JDBC快速入门

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 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();
    }
}


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
SQL Java 关系型数据库
【前端学java】JDBC快速入门
【8月更文挑战第12天】JDBC快速入门
136 2
【前端学java】JDBC快速入门
|
Java 数据库连接 数据库
JDBC快速入门(四)
JDBC快速入门(四)
133 0
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
176 3
|
Java 关系型数据库 MySQL
JDBC简介以及快速入门
JDBC简介以及快速入门
113 0
|
SQL Java 关系型数据库
JDBC快速入门
JDBC快速入门
126 0
|
SQL Java 关系型数据库
JDBC知识【JDBC快速入门】第二章
JDBC知识【JDBC快速入门】第二章
|
SQL Java 关系型数据库
JDBC快速入门
JDBC快速入门
140 0
|
SQL Java 数据库连接
JDBC快速入门(五)--PreparedStatement用法
JDBC快速入门(五)--PreparedStatement用法
243 0
|
Java 数据库连接 数据库
JDBC快速入门(三) 代码再优化
JDBC快速入门(三) 代码再优化
105 0

热门文章

最新文章