【Java】JDBC连接MySQL数据库,一把斗地主时间从无到有讲个通透~

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

有如下:

1)首先 获取连接 我们在上面使用了DataSource类获取 DataSource的对象从而获取连接。这种方法比较注册驱动获取连接,还有一个好处,就是可以使用数据库连接池。


2)除此之外,我们利用PreparedStatemen这个类, preparedStatement 翻译过来就是~事先准备好的声明。 通过连接 获取事先准备好的声明。

PreparedStatement preparedStatement = connection.preparedStatement(SQL);

//上述获取连接之后,等号右边可以翻译为根据连接处理预先准备好的SQL字符串语句。

//然后把preparedStatement类型的引用变量指向 等号右边返回的对象


3)得到事先准备好的声明之后,对 事先准备好的声明 内 放置 要操作的具体内容!

即使setString和setInt 方法,

注意填空的问号下标应该是从1开始的!~


4)这样一来二去,我们把Statement方法优化成了PreparedStatement方法。好处有2

4.1)通过事先处理,后面可以填入的内容 鲁棒性增高,代码可复用性增强

4.2)无特殊要求,百分之九十九点九的开发中程序员都

使用                PreparedStatement                        来防止数据库注入


5)接下来就是对预处理操作的具体执行

5.1)  DQL语句     数据查询语言         preparedStatement.ExecuteQuery()

5.2)  DML语句     数据操纵语言         preparedStatement.ExecuteUpdaye()这两个方法。

Execute the prepared statement翻译过来就是执行准备好的语句!

在此我们要注意执行所准备的语句如果是select即查询(query)语句,需要返回结果集合 ResultSet类实例化的集合对象。

**在针对结果集合对象resultSet进行操作时,必须调用其中的next()**方法!!!

因为next()方法相当于我们获取的操作集合的光标。调用该方法之后,我们能将resultSet结果集里面的对象取出!注意一定要调用这个next方法哦

如果查询结果集存在,resultSet.next();方法的返回值是true,否则是false;

因此可以放在if或者while内使用!~

while(resultSet.next());

if(resultSet.next());

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) {

面试资料整理汇总

成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题

成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题

这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。

面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

在这里祝大家能够拿到心仪的offer!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。

面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

在这里祝大家能够拿到心仪的offer!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-cUYft44e-1713661099185)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值