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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文,教你从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的代码块影响不大,这种现象就叫做低耦合。

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

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

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
1月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
34 1
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
62 4
|
1月前
|
SQL 关系型数据库 MySQL
go语言中安装数据库驱动
【11月更文挑战第1天】
53 5
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
28天前
|
网络安全 数据库
gbase 8a 数据库 安装8ampp 常见ssh报错问题
gbase 8a 数据库 安装8ampp 常见ssh报错问题
|
1月前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
187 0
|
4天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
18 3