【MySQL】JDBC的连接

目录

一. 具体操作如下

1.注册驱动

二.实操


 JDBC(Java DataBase Connectivity)java 数据库连接,是 JavaEE 平台下的技术规范,其定义了在 Java 语言中连接数据,执行 SQL 语句的标准,可以为多种关系数据库提供统一访问。

一. 具体操作如下
1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");

2.获取连接

DriverManager(驱动管理类)功能如下: 1. 注册驱动 2. 获取数据库连接

⽅法1: 注册与给定的驱动程序 DriverManager 。 public static void registerDriver(Driver driver) throws SQLException

⽅式2:根据url、数据库登录的⽤户名、密码获取⼀个数据库的连接对象。

public static Connection getConnection(String url, String user, Stri ng password)

参数说明:

1.url : 连接路径

语法:jdbc:mysql://ip地址(域名):端⼝号/数据库名称?参数键值对1&参数键值对2…

示例:jdbc:mysql://127.0.0.1:3306/db1 

1).如果连接的是本机mysql服务器,并且mysql服务默认端⼝是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对 

(2)JDBC配置 useSSL=false 使⽤⽤户账号密码进⾏连接,useSSL=true:⼀般通过证书或者令牌进⾏安全验证。

(3)JDBC配置useTimezone=true和serverTimezone=GMT%2B8的⽬的是为了解决时区 设置问题,确保Java应⽤程序与MySQL数据库之间的时间同步。

2.user :⽤户名

3.password :密码

4.Connection 数据库连接对象

功能: 1. 获取执⾏ SQL 的对象 2. 管理

 String url = "jdbc:mysql://127.0.0.1:3306/数据库名? charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8";String user = "数据库账户";String password = "数据库密码";Connection conn = DriverManager.getConnection(url, user, password);

3.定义sql

 String sql = "sql语句";

4.获取sql对象

Connetction类中重要的成员⽅法包括:

1. 普通执⾏SQL对象: Statement createStatement()⽅法

2. 创建PreparedStatement类的实例: PreparedStatement prepareStatement(sql)⽅法 预编译SQL的执⾏SQL对象, 通过这种⽅式获取的 PreparedStatement SQL语句执⾏对象是我们⼀ 会重点要进⾏讲解的,它可以防⽌SQL注⼊。

Statement sta = conn.createStatement();

二.实操

1.DriverManager

import java.sql.*;
import java.text.MessageFormat;public class DEMO1_DriverManager {public static void main(String[] args) {Connection connection=null;Statement statement=null;ResultSet resultSet=null;try {//1.加载数据库厂商提供的驱动Class.forName("com.mysql.cj.jdbc.Driver");//指定路径//2.获取数据库的连接                 固定写法        IP+端口号       数据库               字符集编码connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java114?characterEncoding=utf8&allowPublicKeyRetrieval=true&useSSL=false","root","hhj048482");//通过实现类来以获取数据库连接Connnection是Java中的类//3.创建Statement对象statement = connection.createStatement();//4.定义SQL语句String sql="select id,name,sno,age,gender,enroll_date,class_id from student";//5.执行SQL语句resultSet = statement.executeQuery(sql);//执行查询//statement.executeUpdate();//执行更新执行//6.遍历结果集,获取数据行while (resultSet.next()) {//获取ID列的值long aLong = resultSet.getLong(1);//resultSet.getLong("id");String string = resultSet.getString(2);String string1 = resultSet.getString(3);int anInt = resultSet.getInt(4);Date date = resultSet.getDate(5);long aLong1 = resultSet.getLong(7);System.out.println(MessageFormat.format("学生编号={0},姓名={1},学号{2},年龄{3},性别={4},入学时间={5},班级编号={6}",aLong,string,string1,anInt,date,aLong1));}} catch (ClassNotFoundException e) {throw new RuntimeException(e);} catch (SQLException e) {throw new RuntimeException(e);}finally{//释放结果集对象if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {throw new RuntimeException(e);}}if (statement != null) {try {statement.close();} catch (SQLException e) {throw new RuntimeException(e);}}if (connection != null) {try {connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}}}

2.DataSource

import com.mysql.cj.jdbc.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class DBUtiL {//数据源private static DataSource dataSource=null;//数据库连接串private static final String URL="jdbc:mysql://127.0.0.1:3306/java114?characterEncoding=utf8&allowPublicKeyRetrieval=true&useSSL=false";//用户名private static final String USER="root";//密码private static final String PASSWORD="hhj048482";//当类加载到JVM的时候,执行数据源的初始化static {MysqlDataSource mysqlDataSource=new MysqlDataSource();mysqlDataSource.setURL(URL);mysqlDataSource.setUser(USER);mysqlDataSource.setPassword(PASSWORD);dataSource = mysqlDataSource;}//构造方法私有化,防止new这个对象private DBUtiL(){}/*** 获取数据库的连接*/public static Connection getConnection() throws SQLException {return dataSource.getConnection();}public static void close (ResultSet resultSet, Statement statement, Connection connection) {// 释放结果集对象if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}// 释放Statementif (statement != null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}// 关闭数据库连接if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}

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

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

相关文章

二叉树的链式表示及实现(实验6--作业)

一、功能概述 这段 C 代码实现了二叉树的一系列操作,包括创建二叉树、前序遍历、中序遍历、后序遍历、层次遍历、中序非递归遍历、求二叉树深度、交换左右子树、统计节点个数以及销毁二叉树等功能。 二、主要数据结构和类型定义 BiTNode结构体表示二叉树的节点&a…

三维测量与建模笔记 - 2.1 坐标转换基础

2D坐标变换 平移可以看做是对原始的x和y加上了一个偏移,也可以理解为按照给定的平移向量进行移动。 缩放变换,本质是对x,y乘上一个缩放系数。 综合缩放、旋转、平移 矩阵乘法的顺序会对结果有影响,需要注意。 2D欧氏变换 2D欧式…

LeetCode_2119. 反转两次的数字_java

1、题目 2119. 反转两次的数字https://leetcode.cn/problems/a-number-after-a-double-reversal/ 反转 一个整数意味着倒置它的所有位。 例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。 给你一个整数 num ,反转 num 得…

二十四、Python基础语法(变量进阶)

一、引用 在定义变量的时候, 解释器会给变量和数据分别在内存中分配内存,变量中保存的是数据的地址, 称为引用,Python 中数据的传递,传递的都是引用,可以使用 id(变量) 函数,获取变量中引用地址。 # 将数字1在内存中的地址储存到变量a中 a …

Javascript遍历对象for ....in

//遍历对象for...In //用字变量创建对象,对象中有title,date,author属性和read()方法, let w{ title:xxx塌房了, date:2024年10月28日, author:狗仔, read:function(){ console.log(阅读新闻this.title); } }; w.read(); for(let temp in w){…

帝国CMS 内容页调用上一篇下一篇的方法(精华汇总)

帝国cms默认的内容页的上一页&下一页的调用代码是: 上一篇:[!--info.pre--] 下一篇:[!--info.next--] 但是实话实说,如果做个很普通的模版那足够用了,但是如果想个性化一点的话,比如加背景&#xff…

Zookeeper是什么:深入分析分布式系统的协调者

在数据库和互联网应用高速发展的时代,大规模的分布式系统不断进化。分布式系统不仅代表数据会分布在多个节点上,更重要的是要保证这些节点之间的协同和一致性。在这个过程中,不仅是简单的调度问题,还涉及到多重的复杂性和高昂的调…

NVR监测软件/设备EasyNVRNVR批量管理软件/平台多元接入方式与应用实例

在数字化安防时代,视频监控技术已成为维护公共安全、提升管理效能的重要基石。随着科技的飞速发展,流媒体技术和视频监控正经历着前所未有的变革与融合。NVR小程序接入平台/设备EasyNVR,作为一款基于“云-边-端”一体化架构的视频融合云平台&…

【归一化技术】层归一化和批归一化

归一化技术在深度学习中被广泛应用,以加速训练过程、稳定模型收敛,并减少梯度消失或爆炸问题。 一、 层归一化 **层归一化(Layer Normalization)**是一种归一化技术,广泛用于深度学习模型,尤其是在 Trans…

RWA“两链一桥”平台在香港金融科技周亮相

第九届香港金融科技周今日开幕,记者在主题为Trust Bridge的论坛上获悉,蚂蚁数科旗下蚂蚁链在此次金融科技周首次公开了其为RWA业务打造的“两链一桥”平台,旨在帮助更多内地新能源资产赴港RWA,实现技术赋能实体资产。 “两链一桥“…

二叉树前序遍历的 Java 实现,包括递归和非递归两种方式

二叉树前序遍历是一种遍历树节点的方式,遵循特定的顺序。其基本过程可以总结为以下几个步骤: 前序遍历的顺序 访问根节点:首先处理当前节点。 递归遍历左子树:然后依次访问左子树。 递归遍历右子树:最后访问右子树。 …

简记Vue3(二)—— computed、watch、watchEffect

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

C++的汉诺塔

汉诺塔(Tower of Hanoi)是一个经典的递归问题。问题的描述如下: 有三根杆(通常称为 A、B、C),以及一系列大小不同、穿在一根杆上的圆盘。这些圆盘可以滑动到任何一根杆上,但是每次只能移动一个圆盘,且不能将较大的圆盘放在较小的圆盘上。目标是将所有圆盘从杆 A 移动到…

Android Gradle

#1024程序员节|征文# Gradle 是一款强大的自动化构建工具,广泛应用于 Android 应用开发。它通过灵活的配置和丰富的插件系统,为项目构建提供了极大的便利。本文只是简单的介绍 Gradle 在 Android 开发中的使用,包括其核心概念、构…

Go 语言基础教程:7.Switch 语句

在这篇教程中,我们将学习 Go 语言中的 switch 语句,它是条件分支的重要结构。我们将通过一个示例程序逐步解析 switch 的不同用法。 package mainimport ("fmt""time" )func main() {i : 2fmt.Print("Write ", i, " …

拖拽盖章处理

进行元素拖拽:同类章替换、删除已盖章 1.复制对应元素,在onmousemove中left和top一直在变化 2.onmouseup时,计算出在pdf显示区域内的left,top,removeChild删除原先复制的元素,再appendChild到pdf显示区域的…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十二)拓展图优化库g2o(一)框架

【转载】理解图优化,一步步带你看懂g2o框架 文章来源:理解图优化,一步步带你看懂g2o框架 小白:师兄师兄,最近我在看SLAM的优化算法,有种方法叫“图优化”,以前学习算法的时候还有一个优化方法…

机器翻译技术:AI 如何跨越语言障碍

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共23款…

装饰器模式的适用场景示例

1. 动态扩展和撤销类的功能 假设我们有一个 ApiRequest 类,用于发送 HTTP 请求。在某些场景下,我们希望对传输的数据进行加密以提高安全性,但在其他场景下不需要加密。通过装饰器模式,可以轻松地在需要时动态扩展这个功能&#x…

【建造&机械】木材运输车辆检测系统源码&数据集全套:改进yolo11-GhostHGNetV2

改进yolo11-SPPF-LSKA等200全套创新点大全:木材运输车辆检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.28 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片…