Java 访问数据库的奇妙之旅

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文介绍了Java访问数据库的几种常见方式

 目录

一、JDBC 基础入门

(一)连接数据库的第一步

(二)简单代码示例

二、更安全的 PreparedStatement

(一)为啥要用它

(二)代码示例

三、高效的连接池

(一)连接池是啥好东西

(二)Druid 连接池示例


宝子们,今天咱就来唠唠 Java 是咋跟数据库打交道的。在开发那些超酷的应用程序时,数据的存储和读取可是至关重要的环节,而 Java 访问数据库的方式就像是打开数据宝库的不同钥匙。

一、JDBC 基础入门

(一)连接数据库的第一步

首先呢,咱得知道啥是 JDBC(Java Database Connectivity),这可是 Java 访问数据库的根基。就好比你要去一个神秘的岛屿(数据库),JDBC 就是那艘带你前往的船。

在开始之前,得先把对应的数据库驱动搞到手。比如说,如果是 MySQL 数据库,就得去找到 MySQL 的 JDBC 驱动包,然后加到咱的 Java 项目里。这就像是给船准备好燃料,不然可走不动。

(二)简单代码示例

来,看看下面这段代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcBasicExample {
    public static void main(String[] args) {
        // 这就是数据库的地址,告诉 Java 要去哪儿找数据库,格式得写对哦
        String url = "jdbc:mysql://localhost:3306/mydb";
        // 数据库的用户名,就像你上某个网站的账号
        String username = "root";
        // 密码,可不能随便告诉别人
        String password = "your_password";
        try {
            // 这一步就像是启动船的引擎,加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立连接,现在船出发啦,驶向数据库
            Connection connection = DriverManager.getConnection(url, username, password);
            // 创建一个能执行 SQL 语句的家伙
            Statement statement = connection.createStatement();
            // 写个简单的 SQL 语句,比如创建一个表
            String sql = "CREATE TABLE IF NOT EXISTS test_table (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255))";
            // 让它去执行这个 SQL 语句
            statement.executeUpdate(sql);
            // 用完了就得关闭资源,先把执行 SQL 的家伙关掉
            statement.close();
            // 再关掉连接,船靠岸啦
            connection.close();
            System.out.println("表创建成功,数据库连接操作顺利!");
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

image.gif

这段代码就是最基础的 JDBC 操作,创建了一个表。宝子们可以看到,通过 DriverManager 拿到连接,用 Statement 执行 SQL,最后关闭连接,是不是有点感觉了?

二、更安全的 PreparedStatement

(一)为啥要用它

有时候,咱直接用 Statement 可能会有安全隐患,这时候 PreparedStatement 就闪亮登场啦。它可以防止一种叫 SQL 注入的坏事儿发生。比如说,有人想通过在输入框里输入一些奇怪的字符,来篡改你的 SQL 语句,获取不该获取的信息,这可不行!而 PreparedStatement 就能把这些危险挡在门外。

(二)代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class PreparedStatementExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String username = "root";
        String password = "your_password";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, username, password);
            // 看这里,SQL 语句里用问号占位,就像给要填的信息留了个空座位
            String sql = "INSERT INTO test_table (name) VALUES (?)";
            // 创建 PreparedStatement 对象
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            // 给占位符设置值,第一个参数是占位符的位置(从 1 开始),第二个是要设置的值
            preparedStatement.setString(1, "张三");
            // 执行插入操作
            preparedStatement.executeUpdate();
            // 关闭资源
            preparedStatement.close();
            connection.close();
            System.out.println("数据安全插入成功!");
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

image.gif

PreparedStatement 插入数据是不是很简单?而且还安全,宝子们以后插入、更新数据的时候尽量用它哦。

三、高效的连接池

(一)连接池是啥好东西

每次都去创建和销毁数据库连接是不是有点麻烦,还浪费资源?这就像你每次出门都要重新造一辆车,开完就扔掉,太奢侈啦!连接池就是解决这个问题的神器。它会提前创建好一些数据库连接,放在一个 “池子” 里,当程序需要连接数据库时,就从池子里拿一个,用完了再放回去,而不是每次都重新创建和销毁,这样效率就大大提高啦。

(二)Druid 连接池示例

咱以常用的 Druid 连接池为例,看看代码咋写。

首先得把 Druid 的依赖加到项目里哦。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.16</version>
</dependency>

image.gif

然后是代码:

宝子们看,用连接池是不是很方便?而且能让咱的程序运行得更高效、更稳定。

好啦,今天就给大家介绍了 Java 访问数据库的几种常见方式,从基础的 JDBC,到更安全的 PreparedStatement,再到高效的连接池。希望大家都能掌握这些技能,在开发的道路上勇往直前!如果有啥问题,随时在评论区留言哦。

在Java中访问数据库的几种方式的优缺点对比

除了JDBC,还有哪些Java框架可以方便地访问数据库?

如何优化Java访问数据库的性能?

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
173 1
|
3月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
112 6
|
3月前
|
Java API Apache
|
4月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
375 0
在Java中处理JSON数据:Jackson与Gson库比较
|
4月前
|
JSON Java 数据格式
Java Jackson-jr库使用介绍
Jackson-jr是专为资源受限环境设计的轻量级JSON处理库,适用于微服务、移动应用及嵌入式系统。它通过牺牲部分高级功能实现了更小体积和更快启动速度,非常适合对库大小敏感的项目。本文将介绍如何使用Jackson-jr进行JSON序列化与反序列化,并演示处理嵌套对象与数组的方法。此外,还介绍了自定义序列化与反序列化的技巧以及性能与功能的权衡。通过示例代码,展示了Jackson-jr在常见任务中的高效与灵活性。
47 0
|
5月前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
6月前
|
安全 Java
Java模拟生产者-消费者问题。生产者不断的往仓库中存放产品,消费者从仓库中消费产品。其中生产者和消费者都可以有若干个。在这里,生产者是一个线程,消费者是一个线程。仓库容量有限,只有库满时生产者不能存
该博客文章通过Java代码示例演示了生产者-消费者问题,其中生产者在仓库未满时生产产品,消费者在仓库有产品时消费产品,通过同步机制确保多线程环境下的线程安全和有效通信。
|
6月前
|
安全 Java API
Java 8 流库的魔法革命:Filter、Map、FlatMap 和 Optional 如何颠覆编程世界!
【8月更文挑战第29天】Java 8 的 Stream API 通过 Filter、Map、FlatMap 和 Optional 等操作,提供了高效、简洁的数据集合处理方式。Filter 用于筛选符合条件的元素;Map 对元素进行转换;FlatMap 将多个流扁平化合并;Optional 安全处理空值。这些操作结合使用,能够显著提升代码的可读性和简洁性,使数据处理更为高效和便捷。
217 0
|
6月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot引入Caffeine作为缓存库的问题如何解决