JDBC编程安装———通过代码操控数据库

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细

阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能帮到你!

目录

一:通过java来操作数据库

二:JDBC概念

1:api(应用程序接口)

2:SDK(软件开发工具包)

三:JDBC的发展历程简述

四:安装JDBC

五:写JDBC代码

1:创建数据源,确定数据库的位置

2:让idea和数据库建立连接

3:写sql

4:将sql转化为可发送的sql语句对象

5:执行sql语句

6:释放资源

7:程序运行

8:如果要执行插入语句(补充)

六:低耦合,高内聚


一:通过java来操作数据库

在前面的学习中,都是通过写sql语句直接在数据库上进行操作,但在实际开发过程中,大部分情况,我们都是通过编程语言来写SQL操作管理数据库的,也有少部分情况直接在数据库上进行操作,如:测试,调试,环境验证

主流的编程语言都可以通过代码对数据库进行操作(大部分都大同小异)

在java中有许多种方法可以操作数据库,下面介绍最基础的一种JDBC

二:JDBC概念

JDBC就是java中一种最基础的操作数据库的方式

在Java中,数据库会提供api(application programming interface)应用程序接口,我们通过JDBC来调用api才可以操作数据库

注:只要是需要A来进行编程,那么就需要A提供api

例如:我们想让chatgpt写一段代码,那么就需要chatgpt提供api

1:api(应用程序接口)

具体的体现形式为已经写好的一些类和方法

2:SDK(软件开发工具包)

如果某个东西提供的api非常的丰富,我们就叫它SDK(软件开发工具包)

注:JDK就是java的软件开发工具包

三:JDBC的发展历程简述

早期,像mysql,oracle,sqlsever,sqlite等等这些数据库因为是不同的公司不同程序员开发的不同数据库,所以它们的api并不统一,后来Java通过让各个公司数据库的api进行封装(即在原来的api基础上不变,加一层封装,适配到JDBC这一套接口上),统一了api全部适用于JDBC,消除了各种数据库api的差异

四:安装JDBC

(1)下载JDBC驱动包,这个驱动包就是上述说的给MySQL数据库的api进行封装,适配上Java的JDBC接口

注:这种驱动包并不是JDK(Java软件开发包)里就有的,而是属于“第三方库”,需要通过其他途径进行下载

Maven Repository: Search/Browse/Explore (mvnrepository.com)

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

这里的jar文件是一个类似于rar的压缩包,里面装的都是.class文件

注重要:下载完之后找到这个文件ctri+c复制一下(后面会用到)

(2)把jar引入项目中

1:打开idea

image.gif 编辑

image.gif 编辑

(重要)叫lib,然后把鼠标放到lib上,点击选中lib,Ctrl+V粘贴出来弹窗,点击ok

image.gif 编辑

最后一步:右键刚才建立的文件lib,点击Add   as  Library导入即可

image.gif 编辑

image.gif 编辑

就OK啦,有手就行。

五:写JDBC代码

import java.sql.SQLException;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Hua YY
 * Date: 2024-09-10
 * Time: 17:44
 */
public class TestJDBCSelect {
    public static void main(String[] args) throws SQLException {
        //1:建立数据源,确定数据库的位置
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java110?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("613718long");
        //2:建立连接
        Connection connection = dataSource.getConnection();
        //3:写sql语句并进行预处理,sql转换为可发送的语句对象
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4:执行SQL语句
        ResultSet resultSet = statement.executeQuery(sql);//结果集合
        while(resultSet.next()){//迭代,光标往后走
            //获取id这一列的数值,期望得到一个int返回值
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.print("id:" + id + " ");
            System.out.println("name:" + name + " ");
        }
        //释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

image.gif

1:创建数据源,确定数据库的位置

image.gif 编辑

①第一种写法:

image.gif 编辑

注:括号里的服务器地址组成:ip地址+端口地址+数据库名来进行定位(下面有补充说明)

②第二种写法:

image.gif 编辑

第一种写法的好处在于,如果后续更换了数据库,比如MySQL数据库更换成了orcle,那么对原来的代码并不构成影响(因为使用了向下转型嘛,本质上还是属于DataSource这个类型的),达到了低耦合的效果,但写法②就不行了,一旦更改数据库,所有这些MysqlDataSource类型的数据都要进行修改。

image.gif 编辑

这里我们直接复制粘贴即可

image.gif 编辑

2:让idea和数据库建立连接

image.gif 编辑

image.gif 编辑 image.gif 编辑

3:写sql

image.gif 编辑

4:将sql转化为可发送的sql语句对象

image.gif 编辑

导包:

image.gif 编辑

通过控制台写的sql语句,都是把原始的sql发送给服务器,服务器在进行解析

但是JDBC不同,可以通过PreparedStatement把sql语句解析好,在发送给服务器,服务器接收到后直接执行就可以了,大大降低了服务器的成本

5:执行sql语句

image.gif 编辑

image.gif 编辑

6:释放资源

image.gif 编辑

ResultSet resultSet

Connection connection

PreparedStatement statement

这三个资源是我们需要手动进行释放的,这三个对象手中都持有计算机中一些重要的硬件、软件资源。

释放资源,先开的后关,后开的先关,"  .close  " 方法

注:像内存,创建个变量之类的,也是一种重要的资源,之所以没有去手动释放,是因为JVM帮我们进行了回收,垃圾回收机制(GC)

7:程序运行

结果如下:相当于直接在MySQL中执行“select * from student”操作。

image.gif 编辑

8:如果要执行插入语句(补充)

参考以下代码

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Hua YY
 * Date: 2024-09-09
 * Time: 10:47
 */
public class TestJDBCInsert {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入ID:");
        int id = scanner.nextInt();
        System.out.println("请输入Name:");
        String name = scanner.next();
      //1建立数据源,确定数据库的位置
        DataSource dataSource = new MysqlDataSource();
        //2找ip地址端口s输入用户名和密码
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java110?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("613718long");
        //3建立连接
        Connection connection = dataSource.getConnection();
        //4写sql语句
        String sql = "insert into student values(?,?) ";//"insert into student values(" + id + " , '" + name +"')";//重点,这里为什么要加单引号双引号,字符串拼接?
        //5将sql语句转化为可以发送的语句对象,即预处理语句
        PreparedStatement statement = connection.prepareStatement(sql);
        /*
        * 替换占位符*/
        statement.setInt(1,id);//把第一个?替换为id
        statement.setString(2,name);//把第二个?替换为name
        //6发送并返回一个整数
        int n = statement.executeUpdate();
        System.out.println("n:"+n);
        //释放资源
        statement.close();
        connection.close();
    }
}

image.gif

六:低耦合,高内聚

在写代码,构建框架,我们常常提到两句话“低耦合,高内聚”,这是什么意思呢?

低耦合:参考第五点的第1点的两种写法,耦合我们这里可以理解成两者之间的关联程度,比如:A这一块的代码出现了问题,但是对B的代码块影响不大,这种现象就叫做低耦合。

举个形象的例子:张三和李四是兄弟,张三有天出车祸了,李四必须要去医院照顾张三,此时李四的工作就不得不耽误了,对李四的影响很大

高内聚:就是把有关系的代码放在一起 ,方便管理

举个形象的例子:我的衣服分夏季和冬季两类塞进两个大柜子,在每个柜子中,我又把上衣,裤子,袜子,帽子放到不同的夹层中,从而我每次找衣服穿的时候就很快能找到

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
402 2
|
7月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
8月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
786 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
8月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
464 14
|
9月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
8月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
1598 4
|
5月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
576 7
|
7月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
10月前
|
Ubuntu 关系型数据库 Linux
Linux数据库安装
本文介绍了在CentOS 8.0和Ubuntu 22.04系统上安装、配置和启动MariaDB数据库服务器的详细步骤。包括通过`yum`和`apt`包管理器安装MariaDB服务,启动并检查服务运行状态,设置root用户密码以及连接数据库的基本操作。此外,还展示了如何在Ubuntu上更新软件包列表、安装依赖项,并验证MariaDB的版本和运行状态。通过这些步骤,用户可以成功部署并初始化MariaDB环境,为后续数据库管理与应用开发奠定基础。
485 61