【JDBC编程】Java连接MySQL的五个步骤

目录

JDBC编程

1.JDBC的使用

2.数据库连接Connection

3.Statement对象

 4.ResultSet对象


JDBC编程

JDBC编程运用了MySQL提供的 Java 的驱动包 mysql-connector-java ,需要基于 Java 操作 MySQL 即需要该驱动包。同样的, 要基于 Java 操作 Oracle 数据库则需要 Oracle 的数据库驱动包ojdbc。

1.JDBC的使用

用前准备:

准备数据库驱动包,并添加到项目的依赖中:
在项目中创建文件夹lib ,并将依赖包 mysql-connector-java-5.1.47.jar 复制到 lib 中。再配置该 jar
包到本项目的依赖中:右键点击项目 Open Module Settings ,在 Modules 中,点击项目,配置
Dependencies ,点击 + JARS or Directories ,将该 lib 文件夹配置进依赖中,表示该文件夹下的
jar 包都引入作为依赖。
MySQL 数据连接的 URL 参数格式如下:
jdbc : mysql : // 服务器地址 : 端口 / 数据库名 ? 参数名 = 参数值
// 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法
区,并执行该类的静态方法块、静态属性。
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8");Statement statement = connection.createStatement();ResultSet resultSet= statement.executeQuery( "select id, sn, name, qq_mail, classes_id from student");while (resultSet.next()) {int id = resultSet.getInt("id");String sn = resultSet.getString("sn");String name = resultSet.getString("name");int classesId = resultSet.getInt("classes_id");System.out.println(String.format("Student: id=%d, sn=%s, name=%s, 
classesId=%s", id, sn, name, classesId));}//关闭结果集
if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}
}
//关闭命令
if (statement != null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}
}
//关闭连接命令
if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}
}
JDBC使用步骤总结:
      1. 创建数据库连接 Connection
      2. 创建操作命令 Statement
      3. 使用操作命令来执行 SQL
      4. 处理结果集 ResultSet
      5. 释放资源

        这里可以看到Java使用数据库的代码非常多,而且每次连接都需要重复这个过程,于是就有大佬写了数据库框架Mybatis,把上面的代码都封装了起来,用的时候只需要一条注解就可以了。现在工程中也基本上不需要手敲上述代码了,但是作为新手我们也是需要把基础打牢固的。

2.数据库连接Connection

Connection 接口实现类由数据库提供,获取 Connection 对象通常有两种方式:
一种是通过 DriverManager (驱动管理类)的静态方法获取:
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);
一种是通过 DataSource (数据源)对象获取: 实际应用中会使用 DataSource 对象。
DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();
以上两种方式的区别是:
       1. DriverManager 类来获取的 Connection 连接,是无法重复利用的,每次使用完以后释放资源
时,通过 connection.close() 都是关闭物理连接。
       2. DataSource 提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以复用的,每次使用完数据库连接,释放资源调用connection.close() 都是将Conncetion连接对象回收。

3.Statement对象

Statement 对象主要是将 SQL 语句发送到数据库中。 JDBC API 中主要提供了三种 Statement 对象。

 

最常用的就是PreparedStatement对象。使用?作为占位符,下标从1开始。
主要掌握两种执行 SQL 的方法:
  • executeQuery() 方法执行后返回单个结果集的,通常用于select语句
  • executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于updateinsertdelete语句

 4.ResultSet对象

ResultSet 对象它被称为结果集,它代表符合 SQL 语句条件的所有行,并且它通过一套 getXXX 方法提供了对这些行中数据的访问。
ResultSet 里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet next()方法 , 如果我们想要得到 ResultSet 里的所有记录,就应该使用 while 循环。

 

主页已更新完Java基础内容,数据结构基础,

正在更新算法篇,数据库篇,

未来会更新Java项目,SpringBoot,Redis以及各种Java路线会用到的技术。

求点赞!求收藏!求评论!求关注!

谢谢大家!!!!!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

demo版多人聊天系统

目录 ​编辑 一,引入 二,在Server端修改的代码 1,保存用户信息功能实现 2,拼接消息 3,广播消息 三, Client端要修改的代码 四,效果演示 一,引入 在上一篇文章udp网络服务器中&a…

MySQL索引优化

示例 CREATE TABLE employees (id int(11) NOT NULL AUTO_INCREMENT,name varchar(24) NOT NULL DEFAULT COMMENT 姓名,age int(11) NOT NULL DEFAULT 0 COMMENT 年龄,position varchar(20) NOT NULL DEFAULT COMMENT 职位,hire_time timestamp NOT NULL DEFAULT CURRENT_TI…

PyTorch深度学习:如何提升遥感影像的地物分类精度?

我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…

【算法杂货铺】分治

目录 🌈前言🌈 📁 快速排序 📂75. 颜色分类 - 力扣(LeetCode) 📂 912. 排序数组 - 力扣(LeetCode) 📂 215. 数组中的第K个最大元素 - 力扣(Lee…

突然发现!原来微信批量自动加好友这么简单!

你知道如何更好地管理和利用微信资源,实现客户拓展和沟通吗?下面就教大家一招,帮助大家实现统一管理多个微信号以及批量自动加好友。 想要统一管理多个微信号,不妨试试微信管理系统,不仅可以多个微信号同时登录&#…

数据分析概述、Conda环境搭建及JupyterLab的搭建

1. 数据分析职责概述 当今世界对信息技术的依赖程度在不断加深,每天都会有大量的数据产生,我们经常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。这里所说的信息,可以理解为对数据集处理之后的结果,是从…

【Selenium(五)】

一、鼠标事件 from selenium import webdriver # 导入ActionChains类进行鼠标悬停操作 from selenium.webdriver.common.action_chains import ActionChains import time# 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.E…

vmare17 安装不可启动的iso镜像系统

由于要测试一个软件,要安装一个Windows11_InsiderPreview_Client_x64_zh-cn_26058.iso 于是在虚拟机里捣鼓一下。但是这个iso好像不能直接启动 这样就无法直接安装了,怎么办呢,可以先用个pe系统引导进去,再在PE系统里安装这个iso…

【免费】如何考取《鲸鸿动能广告初级优化师》认证(详细教程)

鲸鸿动能广告初级优化师认证考试PC网址 初级:鲸鸿动能广告初级优化师认证-华为开发者学堂 (huawei.com) 注:免费认证,里面包含免费的课程,浏览器用Edge。 文章目录 鲸鸿动能广告初级优化师认证考试网址 前言 一、备考流程 二…

软考 网络工程师 每日学习打卡 2024/3/21

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论,在此基础上深入理解网络安全协议的工作原理,并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…

python云上水果超市的设计与实现flask-django-php-nodejs

伴随着我国社会的发展,人民生活质量日益提高。于是对云上水果超市进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套云上水果超市,帮助商家进行商品信…

如何为您的网站压缩图像

今天碰到一个客户反馈,他在hostease购买了虚拟主机,创建的WordPress站点图片比较多,后来访问网站,页面上大量的图片加载时间较长,咨询网站图像如何压缩。我们为用户提供网站图像压缩,用户很快完成了设置。在…

【Pt】新建项目时的设置

新建项目时需要在如下界面做一些设置。 一、模板与文件 模板通常选择“PBR - Metallic Roughness Alpha-blend” 文件可以选择fbx,abc,obj等格式的三维模型文件 二、项目设置 2.1 文件分辨率 指的是在软件中的预览效果,分辨率越高预览效果…

使用npm创建一个全局的cli命令,就像vue-cli一样

我们用过vue-cli等工具包,全局安装之后,我们可以直接使用vue create等命令,实际上能够这样使用的原因,就是使用了package.json里面的bin字段注册命令。接下来就以一个脚本文件为例子为大家演示一下bin是如何发挥作用的。 创建项目…

跳过mysql权限验证来修改密码-GPT纯享版

1.打开 MySQL 的配置文件,通常是 my.ini 或 my.cnf。 2.找到 [mysqld] 部分,如果没有则添加。 3.在 [mysqld] 部分中添加一行:skip-grant-tables,这个选项告诉 MySQL 服务器跳过权限验证,允许任何用户连接而不需要密码…

java数据结构与算法基础-----排序------堆排序

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 堆排序是利用堆(数据结构)设计的排序算法…

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工…

SRC中的一些信息收集姿势

前言 前前后后挖了四个月的EDUSRC,顺利从路人甲升到了网络安全专家,从提交的内容来看大部分还是以中低危为主,主打的就是弱口令和未授权。 在这过程中还是比较浮躁的,因此接下来的时间还是要好好沉淀一下自身的技术,学…

undo log

从这篇「执行一条 SQL 查询语句,期间发生了什么? (opens new window)」中,我们知道了一条查询语句经历的过程,这属于「读」一条记录的过程,如下图: 那么,执行一条 update 语句,期间发…

vue3 报错 require is not defined

问题 require is not defined 原因 vite 不支持require的用法, webpack是支持的 解决 方法一: 更改vite使用语法 vite官网 方法二 安装转换插件vite-plugin-require-transform 仓库地址 参考 关于Vite不能使用require问题 方法二Vite 踩坑 —— …