Java 访问数据库的奇妙之旅

简介: 本文介绍了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访问数据库的性能?

相关文章
|
13天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
阿里云与企业共筑容器供应链安全
171328 12
|
15天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150294 32
|
23天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201959 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
5天前
|
存储 人工智能 安全
对话|无影如何助力企业构建办公安全防护体系
阿里云无影助力企业构建办公安全防护体系
1251 8
|
1天前
|
机器学习/深度学习 自然语言处理 PyTorch
深入剖析Transformer架构中的多头注意力机制
多头注意力机制(Multi-Head Attention)是Transformer模型中的核心组件,通过并行运行多个独立的注意力机制,捕捉输入序列中不同子空间的语义关联。每个“头”独立处理Query、Key和Value矩阵,经过缩放点积注意力运算后,所有头的输出被拼接并通过线性层融合,最终生成更全面的表示。多头注意力不仅增强了模型对复杂依赖关系的理解,还在自然语言处理任务如机器翻译和阅读理解中表现出色。通过多头自注意力机制,模型在同一序列内部进行多角度的注意力计算,进一步提升了表达能力和泛化性能。
|
6天前
|
人工智能 自然语言处理 程序员
通义灵码2.0全新升级,AI程序员全面开放使用
通义灵码2.0来了,成为全球首个同时上线JetBrains和VSCode的AI 程序员产品!立即下载更新最新插件使用。
1260 23
|
8天前
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制全解析:从原理到计算细节,一文尽览!
自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
|
6天前
|
消息中间件 人工智能 运维
1月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
506 21
1月更文特别场——寻找用云高手,分享云&AI实践
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
|
11天前
|
人工智能 自然语言处理 API
阿里云百炼xWaytoAGI共学课DAY1 - 必须了解的企业级AI应用开发知识点
本课程旨在介绍阿里云百炼大模型平台的核心功能和应用场景,帮助开发者和技术小白快速上手,体验AI的强大能力,并探索企业级AI应用开发的可能性。

热门文章

最新文章