JAVA访问MYSQL数据库JDBC

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 阅读人群:刚学习JAVA的人群应该具备的背景知识:mysql数据库

当前版本:

  • jdk-15.0.2
  • jre1.8.0_281

知识梳理
JDBC-MySQL介绍
每个编程语言都会提供其访问数据库的接口,java提供JDBC-MySQL驱动来访问MySQL。而这个驱动在一个文件里,需要我们去官网下载。

JDBC-MySQL安装
下载链接

注:如果你电脑上已经有了JDBC-MySQL,可以跳过本节。

进入下载连接

在"Select Operating System"下面选择Platform Independent(应该是默认选好的)
随便选哪个文件,点击右边的"Download"
点击“No thanks, just start my download”
把压缩文件中名为mysql-connector-java-8.0.25.jar的文件解压(当然你的版本号可能不同)
JDBC-MySQL中的类
Connection类:维持与数据库的连接(好比一个游戏客户端,你每次打开都要登录,关了客户端再打开就要重新登陆),这个Connection就是用来保存登录信息的。
Statement类:用来执行SQL语句,需要用Connection对象创建
ResultSet类:用来接收查询语句的结果
实现
请提前了解try/catch语句的作用

注意,过程中会有很多异常抛出的语句,这些都是必要的。

但还是请专注于核心代码,报错之前你甚至可以直接无视catch语句内的代码和注释,因为那本就是助你查找错误的。

请一步一步跟着做,前一步没调通后面是一定会报错的,而且增加你查找错误的难度。

准备
如果你使用IDE(如eclipse,IDEA),将mysql-connector-java-8.0.25.jar文件导入到外部库里
如果你没有使用IDE,将mysql-connector-java-8.0.25.jar文件解压到项目文件夹里(现在的大多数解压文件都支持解压jar文件),保证com文件夹和你编写的java文件在同一个目录
还是建议使用IDEA,会省掉很多事情

初始化
导入类,这里你也可以挨着写要导入的类

import java.sql.*;
这一步你可以理解为加载驱动。

try{

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

}
catch(Exception e){

// 如果这里的代码执行,说明你的准备工作没做好,这种情况下你后面的代码全会报错
// 检查前面的准备操作,直到这里不报错再写后面的代码
System.out.println("加载驱动失败!");
System.out.println(e);

}
上面代码没有抛出异常的话,证明你的准备工作做得很到位~

建立连接
这里假设你的mysql服务器在本地,端口为3306,要连接的数据库名称为database。

如果不是,将localhost改为服务器的ip地址,3306改为服务器上数据库的端口,database改为数据库名。

Connection con;
String url = "jdbc:mysql://localhost:3306/database";
String username = ""; //这里输入你的数据库用户名
String password = ""; //你的密码

try{

con = DriverManager.getConnection(url,user,password);

}
catch(Exception e){

// 这里的代码执行说明连接失败
// 检查前面的驱动加载是否成功
// 检查url,username,password是否正确
System.out.println("连接失败");
System.out.println(e);

}
创建Statement对象
及其简单的一步

Statement statement = con.creatStatement();
执行查询语句
查询语句用到的是Statement对象的executeQuery()方法,返回一个ResultSet对象

ResultSet rs;
String sql = "";//sql写入要执行的查询语句
rs = statement.executeQuery(sql);
ResultSet对象的使用:
rs.next()
获取下一行数据
刚获得rs时就得执行一次,才是获得第一行数据,不然啥都得不到。
如果获取到的行有数据,则返回true,否则,返回false,表示执行rs.next()之前就到了最后一行
rs.getString(String column)
这个方法传入列名,获取当前行的该列名的String类型的值
其他很少用到,可以去官方文档里看

try{
    //假定获取的结果中有一列叫"name"
    rs.next();
    System.out.println(rs.getString("name"));
}
catch(Exception e){
    System.out.println("出错了!");
    System.out.println(e);
}

执行添加、更新、删除语句
修改语句用到的是Statement对象的executeUpdate()方法,返回的是你修改的行数

String sql = "";
int num;
num = statement.executeUpdate(sql);

封装
为了更好的使用,减少代码量,我自己封装了一下(后面没有其他知识了,只有供参考的代码)

import java.sql.*;

public class MySQLtool {
    public static Connection con;
    public static Statement statement;

    static void Init(String url, String username, String password) {
    // 1. 加载驱动
try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (Exception e) {
            System.out.println(e);
            return;
        }
    // 2. 连接数据库
try {
            con = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            System.out.println(e);
            return;
        }
    }
// 查询
static public ResultSet Query(String sql) {
        try {
            return statement.executeQuery(s);
        } catch (SQLException e) {
            System.out.println(e);
            return null;
        }
    }
// 修改
static public int update(String sql) {
        // 执行语句
        try {
            return statement.executeUpdate(sql);
        } catch (SQLException e) {
            System.out.println(e);
            return -1;
        }
    }

这样就可以MySQL.Init()初始化后,直接通过MySQL.Query()和MySQL.Update()来执行SQL语句了。

MySQLtool可能涉及到类方法的知识,可以先去看看,反正是学java躲不掉的。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
388 5
|
8月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1495 103
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
166 13
|
4月前
|
存储 安全 Java
java: 无法访问org.springframework.ldap.core.LdapTemplate
java: 无法访问org.springframework.ldap.core.LdapTemplate
161 9
|
10月前
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
6月前
|
缓存 Java 数据库
Java 访问修饰符使用方法与组件封装方法详细说明
本文详细介绍了Java中访问修饰符(`public`、`private`、`protected`、默认)的使用方法,并结合代码示例讲解了组件封装的核心思想与实现技巧。内容涵盖数据封装、继承扩展、模块化设计与接口隔离等关键技术点,帮助开发者提升代码的可维护性与安全性,适用于Java初学者及进阶开发者学习参考。
156 1
|
5月前
|
人工智能 Java 关系型数据库
Java的时间处理与Mysql的时间查询
本文总结了Java中时间与日历的常用操作,包括时间的转换、格式化、日期加减及比较,并介绍了MySQL中按天、周、月、季度和年进行时间范围查询的方法,适用于日常开发中的时间处理需求。
113 0
|
9月前
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
10月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
401 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战