java之路 —— 连接数据库知识与操作应用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: java之路 —— 连接数据库知识与操作应用

前言


项目很多小伙伴学习后端的时候以及学习数据库的时候,在后端程序中,有很多的数据来自前端的传递或者后端本身创建的,这些数据都是需要的,学过数据库的小伙伴知道,数据存放到数据库里才容易管理以及安全、方便。那么我们就会需要将程序与数据库进行连接并执行相关的操作,这是后端的一项经典又必不可少的技术


d66c735531014513be1a1cd4d4643cc9.jpg


一、java连接数据库技术


Java 连接技术是 Java 程序与外部资源进行交互的方式,可以包括连接数据库、连接消息队列、连接 Web 服务等等。


Java 连接技术主要有以下几种:


1.JDBC

JDBC(Java Database Connectivity):JDBC是Java连接数据库的标准API。它提供了一组接口和类,用于与关系型数据库进行交互。通过JDBC,可以连接到各种数据库(如MySQL、Oracle、SQL Server等),执行SQL语句、事务管理和结果集处理等操作。


2.ORM

ORM框架: ORM(Object-Relational Mapping)框架允许将Java对象和关系型数据库之间进行映射,进而实现数据库操作。常见的Java ORM框架包括Hibernate、MyBatis等。这些框架提供了对象与数据库表之间的映射关系配置,简化了数据库操作的编写和维护工作。


3.JPA

JPA(Java Persistence API): JPA是一种基于ORM思想的Java持久化规范。它提供了一组API,用于管理和持久化Java对象到关系型数据库。JPA具有统一的API和查询语言,可以与多种底层ORM实现(如Hibernate、EclipseLink等)集成。


4.JPA

数据库连接池: 数据库连接池是一种管理数据库连接的技术,它通过创建和维护一定数量的数据库连接对象,实现连接的复用和高效管理。常见的Java数据库连接池有Apache Commons DBCP、C3P0和HikariCP等。


5.NoSQL数据库驱动:

NoSQL数据库驱动: 除了关系型数据库,Java也支持连接和操作各种NoSQL数据库,如MongoDB、Redis、Elasticsearch等。这些数据库通常有自己的原生Java驱动或客户端库,用于在Java应用程序中进行连接和数据交互。


二、jdbc


JDBC是Java语言中提供的一组API,它提供了一种与关系型数据库进行交互的标准方式。利用JDBC可以让Java程序连接到各种不同的关系型数据库(例如Oracle、MySQL、Microsoft SQL Server等),执行SQL语句以及检索和更新数据库中的数据。


JDBC API包含两部分:JDBC API和JDBC驱动程序

JDBC API提供了访问关系型数据库的标准方式,其中包含连接数据库所需的类、接口和标准SQL类型。

JDBC驱动程序是一个具体的实现,不同类型的关系型数据库需要不同的驱动程序实现。


在使用JDBC时,我们需要先加载对应的JDBC驱动程序,然后通过JDBC API提供的接口和类建立数据库连接,最后通过执行SQL语句来操作数据库中的数据,执行结束后需关闭连接。下面是一个简单的Java程序示例,展示如何使用JDBC连接数据库并执行SQL语句:


import java.sql.*;
public class JDBCDemo {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            // 加载MySQL驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 获取数据库连接
            String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
            String user = "root";
            String password = "123456";
            conn = DriverManager.getConnection(url, user, password);
           /**
            准备写入 SQL 
           */
            // 创建Statement对象
            stmt = conn.createStatement();
            // 执行SQL查询语句
            rs = stmt.executeQuery("SELECT * FROM student");
            // 处理查询结果
            while (rs.next()) {
                System.out.println(rs.getString("Studentname")); //获取Studentname这一列的数据
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 关闭ResultSet、Statement和Connection
            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

上面的示例程序中,我们首先加载了MySQL数据库的JDBC驱动,然后通过DriverManager获取数据库连接,创建Statement对象并执行SQL查询语句,最后处理查询结果并关闭所持有的JDBC资源。


三、连接步骤


使用 JDBC 连接数据库需要分为以下几个步骤:


1. 加载数据库驱动

在连接数据库之前,需要先加载相应的 JDBC 驱动程序。不同类型的数据库需要使用不同的驱动程序,例如 MySQL 使用的驱动程序是 com.mysql.jdbc.Driver,Oracle 使用的是 oracle.jdbc.driver.OracleDriver,如果忘记加载驱动程序,会导致连接数据库失败。

加载驱动程序可以通过 Class.forName() 方法实现,例如:

Class.forName("com.mysql.jdbc.Driver");


2. 创建数据库连接

在加载完成驱动程序之后,就可以使用 DriverManager.getConnection() 方法来创建连接对象。该方法需要传递一个包含连接信息的 URL(Uniform Resource Locator)、用户名和密码,例如:

String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "mypassword";
Connection conn = DriverManager.getConnection(url, user, password);


其中,“jdbc:mysql://” 表示连接的数据库类型是 MySQL,“localhost” 表示连接到本地主机,“3306” 表示连接到 MySQL 的端口号,“mydatabase” 表示要连接的数据库名称,“root” 和 “mypassword” 分别表示连接用户名和密码。


3. 创建 Statement 或 PreparedStatement 对象

连接数据库之后,可以使用 Statement 或 PreparedStatement 对象执行 SQL 语句。其中,Statement 对象用于执行静态 SQL 语句或者预编译的 SQL 语句,PreparedStatement 对象用于执行带参数的 SQL 语句。


创建 Statement 或 PreparedStatement 对象可以通过 Connection 的 createStatement() 或 prepareStatement() 方法实现,例如:

// 创建 Statement 对象
Statement stmt = conn.createStatement();
// 创建 PreparedStatement 对象
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM user WHERE username = ?");


4. 执行 SQL 语句

创建好 Statement 或 PreparedStatement 对象之后,就可以使用 execute()、executeQuery() 或 executeUpdate() 方法来执行 SQL 语句了。其中,execute() 用于执行任意一种 SQL 语句,executeQuery() 用于执行 SELECT 语句并返回结果集,executeUpdate() 用于执行 INSERT、UPDATE 和 DELETE 语句并返回受影响的记录数。

// 执行查询语句,返回结果集
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
// 执行插入语句,返回受影响的记录数
int count = stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('admin', '123456')");


5. 处理结果集

执行 SQL 语句之后,需要将结果集通过 ResultSet 对象进行获取。ResultSet 对象的使用方法和 Statement 或 PreparedStatement 对象类似,例如可以使用 next() 方法将当前记录移动到下一条记录,使用 getXXX() 获取记录中某个列的值,例如:

while (rs.next()) {
    int id = rs.getInt("id");
    String username = rs.getString("username");
    String password = rs.getString("password");
}


6. 关闭资源

最后,在不再使用数据库连接、Statement、PreparedStatement 或 ResultSet 对象时,需要将它们及时关闭,释放对数据库系统的连接,以减少系统负担。例如:

rs.close();
stmt.close();
conn.close();

以上就是使用 JDBC 连接到数据库并执行 SQL 语句的基本步骤。需要注意的是,使用 JDBC 连接数据库需要加上异常处理,防止在执行过程中出现异常导致程序崩溃。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
存储 关系型数据库 MySQL
【Java面试题汇总】MySQL数据库篇(2023版)
聚簇索引和非聚簇索引、索引的底层数据结构、B树和B+树、MySQL为什么不用红黑树而用B+树、数据库引擎有哪些、InnoDB的MVCC、乐观锁和悲观锁、ACID、事务隔离级别、MySQL主从同步、MySQL调优
【Java面试题汇总】MySQL数据库篇(2023版)
|
7天前
|
SQL JavaScript 前端开发
用Java来开发Hive应用
用Java来开发Hive应用
20 7
|
7天前
|
SQL JavaScript 前端开发
用Java、Python来开发Hive应用
用Java、Python来开发Hive应用
18 6
|
7天前
|
Java 数据库连接 开发者
Java中的异常处理机制:理解与应用
在Java编程中,异常处理是一个核心概念,它允许程序在遇到错误时优雅地恢复或终止。本文将深入探讨Java的异常处理机制,包括异常的分类、如何正确使用try-catch-finally块以及throw关键字。我们将通过实例来说明如何在Java应用程序中有效地捕获和处理异常,以确保程序的健壮性和稳定性。
|
7天前
|
Java 调度 开发者
Java中的多线程基础及其应用
【9月更文挑战第13天】本文将深入探讨Java中的多线程概念,从基本理论到实际应用,带你一步步了解如何有效使用多线程来提升程序的性能。我们将通过实际代码示例,展示如何在Java中创建和管理线程,以及如何利用线程池优化资源管理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧,帮助你更好地理解和应用多线程编程。
|
8天前
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
22 2
|
2天前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
9 0
|
2天前
|
Java 开发者
Java中的异常处理机制:理解与应用
在Java编程中,异常处理是确保程序稳定性和可靠性的关键。本文将深入探讨Java的异常处理机制,包括异常的分类、捕获和处理方法,以及如何有效地使用这些工具来提高代码质量。
|
3天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
5天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
66 11