详解Java使用JDBC连接MySQL数据库
作者:九九舅舅酒酒 发布时间:2024-01-24 18:21:06
一:什么是数据库,为什么要有数据库?
数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念。
数据库相信大家都耳熟能详了,其实数据库顾名思义就是存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的~
可能有朋友就要打断我施法了,停停停,我们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();
}
}
}
需要查看了解上文提到的通过注册驱动获取连接,请移步之前博客:注册驱动获取连接
来源:https://blog.csdn.net/m0_56164356/article/details/122226279


猜你喜欢
- 本文实例讲述了Python类的继承、多态及获取对象信息操作。分享给大家供大家参考,具体如下:继承类的继承机制使得子类可以继承父类中定义的方法
- 一、表单效验规则的使用1、自定义效验规则介绍是否必填: required: true || fasle
- 本文实例讲述了JavaScript实现二叉树的先序、中序及后序遍历方法。分享给大家供大家参考,具体如下:之前学数据结构的时候,学了二叉树的先
- 等啊等,约会都回来了,终于等到了Google放出今年的情人节Logo,原本下午四点就可以上线的这篇文章,为了等待Google谷歌美国总部的那
- 在Python中一切都是对象。Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。对象之
- package dao;import org.hibernate.HibernateException;import org.hiberna
- 如下所示:#抽象 (函数)# 1、callable 判断一个对象是否可以被调用x = 1def y(): &nbs
- 说起来惭愧,总是犯一些小错误,纠结半天,这不应为一个分号的玩意折腾了好半天! 错误时在执行SQL语句的时候发出的,信息如下: Java代码
- 当需要远程办公时,使用pycharm远程连接服务器时必要的。PyCharm提供两种远程调试(Remote Debugging)的方式:配置远
- 作用collate_fn:即用于collate的function,用于整理数据的函数。说到整理数据,你当然要会用数据,即会用数据制作工具to
- 一.假设有数据集dfdf.isnull()返回DateFrame,元素为空或者NA就显示True,否则就是False二.判断有空值的列df.
- 一 Consul介绍Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。 Consul是分布式的、高可用
- 我们在爬虫时,经常会遇见中文乱码问题,之前都是编码格式的问题,很少遇见由于压缩格式造成的编码混乱问题,特记录下。先看下混乱的编码样式。b
- 目录一、什么是 socket ?二、Socket 编程的重要概念① IP 地址② TCP/IP 端口③ 协议三、socket 编程的 API
- 本文为大家分享了Python实现自己下载音乐统计的具体代码,供大家参考,具体内容如下今天看Python实例,学习了如何对文件进行操作,突然想
- 概念MySQL5.0版本开始支持存储过程,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法
- 目录解决方案:1. IGNORE2. REPLACE3. ON DUPLICATE KEY UPDATE我们插入数据的时候,有可能碰到重复数
- 介绍在 Go reflect 包里面对 Type 有一个 Comparable 的定义:package reflecttype Type i
- 背景golang 中主推 channel 通信。单个 channel 的通信可以通过一个goroutine往 channel 发数据,另外一
- oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)