详解Java使用JDBC连接MySQL数据库

 更新时间:2022年01月04日 12:02:56   作者:九九舅舅酒酒  
本文详细讲解了Java使用JDBC连接MySQL数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一:什么是数据库,为什么要有数据库?

数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念。

数据库相信大家都耳熟能详了,其实数据库顾名思义就是存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的~

可能有朋友就要打断我施法了,停停停,我们Java程序猿在IDEA里面和控制台你侬我侬,没有对象new个对象存储在内存JVM的堆上就行了,学数据库干啥啊?

这时候我们就需要了解到:内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

以疫情期间为例,把人隔离观察住的酒店,就好比是内存,家喻户晓的JVM就是放在内存上的~~~ 酒店是给人住的,他的空间是宝贵的,然而每个人每天生活必需品,衣食住行等等,隔离一天两天可能酒店还放得下,但是隔离十天半个月,一年半载呢?酒店是住人的,不是放东西的~~~酒店寸土寸金每个地方都很宝贵,拿酒店(内存)来放行李和必需品等(海量数据~),如果酒店还是西安的W酒店,这岂不是很奢侈?~~~你拿来存放自己和跟班大批行李~老哥,还缺行李不?(doge),想要存放大批东西(海量数据),我直接把十四运的主场馆(外存上的数据库)(69.6亩)给你放行李(海量数据)~!

这下诸位应该都了然为什么我们需要搞数据库了吧?

二:如何使用Java连接数据库~

1)原生方法

1.1)加载JDBC 驱动:

Class.forName(driver);// mysql 数据库:“com.mysql.jdbc.Driver”

1.2)建立数据库连接:

Connection conn=DriverManager.getConnection(url,userName,password);

1.3)创建 statement,用来执行SQL 语句:

Statement statement =conn.createStatement();

1.4)执行 SQL 语句:

preparedStatement.Execute 这个。执行所准备的语句,并且返回结果集合 ResultSet

preparedStatement 事先准备好的声明

Execute the prepared statement.就是执行准备好的语句!

ResultSet rs =statement.executeQuery(sql);

1.5)关闭记录集,关闭声明,关闭连接对象

1.6)连起来

在以反射的方式注册驱动从而获取数据库的连接的方法,详情可以参考我以前的博客,因为本文侧重于讲解DataSource连接数据库的方法!所以在此不作赘述~

1.7)原生方法的不足:

每次使用都要创建连接,使用完毕后还必须关闭连接,操作繁琐,易出错;

连接数据库资源不便统一管理;

三:IDEA中配置jar包

工欲善其事必先利其器,在前期的学习过程中,我们使用JDBC连接MySQL的时候应该手动配置Jar包

移步之前的帖子——>配置Java包流程及Jar包下载

四:url必知必会

我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。.就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。

在使用连接数据库的时候需要先知道数据库的

连接信息~

列位您可记住嘞  127.0.0.1 这个地址:就是当前自己电脑的IP地址

而我们的IP地址 和 端口如何理解 

IP地址就相当于我们点外卖订单所填的地址,端口号就是外卖订单所写的收件人!~具体交给谁吃!~ 

而且这个URL没必要强行记

URL

private static final String URL = "jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true";

jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true

放在好找的地方(如gitee码云仓库)等,需要的时候复制粘贴一改就行了!~

五:datasource获取连接

package model;
 
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
 
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
// DBUtil 本质上是一个管理了单例的 DataSource 的类
public class DBUtil {
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true";
//    private static final String URL = "jdbc:mysql://47.98.116.42:3306/java16_order_system?characterEncoding=utf8&useSSL=true";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "rota";
 
    private static volatile DataSource dataSource = null;
 
    public static DataSource getDataSource() {
        if (dataSource == null) {
            synchronized (DBUtil.class) {
                if (dataSource == null) {
                    dataSource = new MysqlDataSource();
                    ((MysqlDataSource)dataSource).setURL(URL);
                    ((MysqlDataSource)dataSource).setUser(USERNAME);
                    ((MysqlDataSource)dataSource).setPassword(PASSWORD);
                }
            }
        }
        return dataSource;
    }
 
    // 数据库连接失败是很常见的问题. 如果失败, 后续的操作肯定也是失败的.
    // 如果发现 Connect 为 null, 就说明数据库连接失败, 就需要查看错误信息(Tomcat 的日志)
    // 常见的问题就是, url, username, password 等信息写错了, 或者数据库没有启动.
    public static Connection getConnection() {
        try {
            return getDataSource().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        System.out.println("数据库连接失败, 请检查数据库是否启动正确, url 是否正确");
        return null;
    }
 
    public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
 
 
}

需要查看了解上文提到的通过注册驱动获取连接,请移步之前博客:注册驱动获取连接

到此这篇关于详解Java使用JDBC连接MySQL数据库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解决Idea查看源代码警告Library source does not match the bytecode for class XXX问题

    解决Idea查看源代码警告Library source does not mat

    在使用IDEA开发时,遇到第三方jar包中的源代码和字节码不一致的问题,会导致无法正确打断点进行调试,这通常是因为jar包更新后源代码没有同步更新造成的,解决方法是删除旧的jar包,通过Maven重新下载或手动下载最新的源代码包,确保IDE中的源码与字节码版本一致
    2024-10-10
  • 基于SpringBoot创建Web页面并热更新的操作步骤

    基于SpringBoot创建Web页面并热更新的操作步骤

    SpringBoot是一个用于快速开发单个微服务的框架,它基于 Spring 框架,简化了Spring应用的初始化过程和开发流程,本文给大家介绍了如何基于SpringBoot创建Web页面并热更新,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 非常全面的IReport的使用教程

    非常全面的IReport的使用教程

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。本教程给大家详细介绍IReport的使用解析,感兴趣的朋友一起看看吧
    2021-10-10
  • Java网络编程之TCP通信完整代码示例

    Java网络编程之TCP通信完整代码示例

    这篇文章主要介绍了Java网络编程之TCP通信完整代码示例,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • 分析HashMap 的 JDK 源码

    分析HashMap 的 JDK 源码

    这篇文章主要分析了HashMap 的 JDK 源码,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-10-10
  • Java参数校验@Validated、@Valid介绍及使用详解

    Java参数校验@Validated、@Valid介绍及使用详解

    Javax.validation是 spring 集成自带的一个参数校验接口,可通过添加注解来设置校验条件,这篇文章主要介绍了Java参数校验@Validated、@Valid介绍及使用详解,需要的朋友可以参考下
    2024-08-08
  • Java编程利用socket多线程访问服务器文件代码示例

    Java编程利用socket多线程访问服务器文件代码示例

    这篇文章主要介绍了Java编程利用socket多线程访问服务器文件代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • jdk环境变量配置切换jdk版本及安装jdk后环境变量不生效问题解决办法

    jdk环境变量配置切换jdk版本及安装jdk后环境变量不生效问题解决办法

    这篇文章主要介绍了jdk环境变量配置切换jdk版本及安装jdk后环境变量不生效问题解决办法,包括配置JAVA_HOME、Path和CLASSPATH,以及如何验证配置是否成功,文章还讲解了如何切换JDK版本,并解决了安装新JDK后环境变量配置不生效的问题,需要的朋友可以参考下
    2024-12-12
  • 浅谈Java实现面向对象编程java oop

    浅谈Java实现面向对象编程java oop

    这篇文章主要介绍了浅谈Java实现面向对象编程java oop,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • SpringMVC4.3解析器HandlerMethodArgumentResolver接口源码

    SpringMVC4.3解析器HandlerMethodArgumentResolver接口源码

    这篇文章主要为大家介绍了SpringMVC4.3解析器HandlerMethodArgumentResolver接口源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论