JDK1.7下测试ConnectorJ连接MySQL8.0

java与数据库的连接 随着我们对java和数据库的深入学习,java与数据库连接也让很多小伙伴感到头疼,而本文就介绍了利用JDBC中的基础API建立java与数据库的连接。 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 本文来源:社区原创投稿;作者:王庆勋。

客户的一些应用系统使用的JDK1.7版本,在将数据库迁移到MySQL8.0的过程中,发现有些MySQL connector/J的版本无法连接到MySQL8.0。本文描述了在Linux JDK1.7环境下,测试不同版本Connector/J的方法,也可用于为MySQL接口的国产数据库产品选择Connector/J版本。

MySQL Connector/J说明

MySQL通过MySQL Connector/J为用Java语言开发的客户端应用程序提供连接,MySQL Connector/J是一个实现Java数据库连接(JDBC) API的驱动程序。

MySQL Connector/J是一个JDBC 4型驱动程序。Type 4标志意味着驱动程序是MySQL协议的纯Java实现,不依赖于MySQL客户端库。

MySQL Connector/J有两个版本:

  • Connector/J 5.1是第4类纯Java JDBC驱动程序,符合JDBC 3.0、4.0、4.1和4.2规范。它提供了与MySQL所有功能的兼容性,包括5.6、5.7和8.0。Connector/J 5.1提供了易于开发的特性,包括向驱动程序管理器自动注册、标准化的有效性检查、分类的SQLExceptions、对大量更新计数的支持、对java.time包的本地和偏移日期时间变量的支持、对JDBC-4.x XML处理的支持、对每个连接客户端信息的支持以及对NCHAR、NVARCHAR和NCLOB数据类型的支持。
  • Connector/J 8.0是用于Java 8平台的第4类纯Java JDBC 4.2驱动程序。它提供了兼容MySQL 5.6、5.7和8.0的所有功能。强烈推荐MySQL连接器/J 8.0与MySQL服务器8.0、5.7和5.6一起使用。请升级到MySQL连接器/J 8.0。

Connector/J不同版本的JDBC、MySQL Server和Java的信息:

Connector/J 版本Driver Type实现的 JDBC 版本MySQLServer 版本支持的 JRE版本
5.143.0, 4.0, 4.1, 4.25.6, 5.7, 8.01.5.x, 1.6.x, 1.7.x, 1.8.x
8.044.25.6, 5.7, 8.01.8.x

可知,要支持JRE1.7版本,需选用连接器Connector/J的版本为5.1 ,而5.1的最新版本为5.1.49 。

测试Connector/J 5.1的不同版本

安装配置jdk1.7

检查当前jdk版本

[root@host73 ~]# java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
[root@host73 ~]# javac -version
javac 1.8.0_111

安装jdk1.7

yum install -y java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64

修改JAVA_HOME

修改/etc/profile文件:
export JAVA_HOME=/usr/lib/jdk1.8.0_111
改为:
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64

重新登录,检查java版本

[root@host73 ~]# which java
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/bin/java
[root@host73 ~]# which javac
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/bin/javac

[root@host74 java]# java -version
java version "1.7.0_261"
OpenJDK Runtime Environment (rhel-2.6.22.2.el7_8-x86_64 u261-b02)
OpenJDK 64-Bit Server VM (build 24.261-b02, mixed mode)
[root@host74 java]# javac -version
javac 1.7.0_261

构造测试数据

确认MySQL数据库版本

mysqld --version
/usr/local/mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild/bin/mysqld  Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)

创建表及用户**

create database testdb;
create user testuser identified with mysql_native_password by 'testpass';
grant all on testdb.* to testuser;

use testdb;

CREATE TABLE `dbinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT 'dbinfo',
  `website` varchar(255) NOT NULL DEFAULT 'website',
  `opensource` varchar(2) NOT NULL DEFAULT '0' COMMENT 'is opensource',
  `country` char(10) NOT NULL DEFAULT '' COMMENT 'country',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB ;

insert into dbinfo values('1','Oracle','www.oracle.com','否','美国');
insert into dbinfo values('2','MySQL','www.mysql.com','是','美国');
insert into dbinfo values('3','GreatSQL','www.greatsql.com','是','中国');

编写测试用java程序

编写ShowDbinfo.java程序,用于测试连接MySQL数据库。

import java.sql.*;

public class ShowDbinfo {

    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://172.17.128.73:16315/testdb?useSSL=false";

    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
    //static final String DB_URL = "jdbc:mysql://172.17.128.73:16310/testdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";


    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "testuser";
    static final String PASS = "testpass";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);

            // 打开链接
            System.out.println("开始连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            // 执行查询
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, website,opensource,country FROM dbinfo";
            ResultSet rs = stmt.executeQuery(sql);

            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String website = rs.getString("website");
                String opensource = rs.getString("opensource");
                String country = rs.getString("country");
                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 名称: " + name);
                System.out.print(", website: " + website);
                System.out.print(", 开源: " + opensource);
                System.out.print(", 来自: " + country);
                System.out.print("\n");
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
            se.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}

运行java程序测试

编译运行java程序,测试指定版本的连接器是否可以连接数据库。以版本5.1.46为例说明。

获取Connector/J

从MySQL官方https://downloads.mysql.com/archives/c-j/下载5.1.46版本的Connector/J,上传解压后,将mysql-connector-java-5.1.46.jar拷贝到ShowDbinfo.java所在目录。

编译运行测试程序

编译java源程序:

javac -cp .:mysql-connector-java-5.1.46.jar ShowDbinfo.java

运行java程序连接数据库:

java -cp .:mysql-connector-java-5.1.46.jar ShowDbinfo

输出结果如下:

开始连接数据库...
ID: 1, 名称: Oracle, website: www.oracle.com, 开源: 否, 来自: 美国
ID: 2, 名称: MySQL, website: www.mysql.com, 开源: 是, 来自: 美国
ID: 3, 名称: GreatSQL, website: www.greatsql.com, 开源: 是, 来自: 中国
Goodbye!

连接失败connector/J

下载测试了5.1的几个版本,结果如下表:

驱动版本是否可以连接MySQL8.0
5.1.49是
5.1.46是
5.1.40否
5.1.30是
5.1.6是

5.1.40无法连接MySQL8.0,报错信息如下:

开始连接数据库...
java.sql.SQLException: Unknown system variable 'query_cache_size'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2503)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369)
at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3833)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3283)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2297)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:527)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at ShowDbinfo.main(ShowDbinfo.java:27)
Goodbye!

Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

欢迎来GreatSQL社区发帖提问
https://greatsql.cn/

GreatSQL社区

Java 使用 JDBC 连接mysql 之前我们学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系;后来我们学习了数据库管理软件MySQL,可以方便的管理数据。那么如何将它俩结合起来呢?即Java程序<==>MySQL,实现数据的存储和处理。那么就可以使用JDBC技术。 阅读详情

相关推荐

MySQL-Connector-Java 连接 MySQL 数据库实战

本文还有配套的精品资源,点击获取 简介:MySQL-Connector-Java 是 MySQL 官方提供的 Java 数据库连接器,它允许 Java 应用程序与 MySQL 数据库进行通信。本实战项目将指导你如何安装、使用 MySQL-Connector-Java,并通过代码示例演示如何连接数据库、执行 SQL 语句和处理结果集。你将学习 JDBC 的基本概念,并了解连接...

weixin_31974443的博客 7350

mysql-connector-java详解

mysql-connector-java是什么?怎么下载?怎么使用?

毛惜时的博客 10万+

通过mysql-connector-java实现Java与MySQL的连接

MySQL Connector/J是MySQL官方提供的Java数据库连接器,允许Java应用程序通过标准的JDBC API与MySQL数据库交互。它作为一个JDBC Type 4驱动,将Java程序与MySQL数据库紧密连接,支持JDBC 4.0和4.1规范,适用于各种Java环境。

weixin_42160645的博客 2136

JDK1.7下测试Connector_J连接MySQL8.0

JDK1.7下测试Connector/J连接MySQL8.0客户的一些应用系统使用的JDK1.7版本,在将数据库迁移到MySQL8.0的过程中,发现有些MySQL connector/J的版本无法连接到MySQL8.0。本文描述了在Linux JDK1.7环境下,测试不同版本Connector/J的方法,也可用于为MySQL接口的国产数据库产品选择Connector/J版本。MySQL Conne...

老叶茶馆 853

MySQL的jar包,包含mysql-connector-java-5.1.49和mysql-connector-j-8.1.0

mysql57驱动jar包,jar包用于访问Mysql数据库的java程序库。 mysql-connector-java是一款由mysql推出的官方驱动,它是java通过JDBC连接操作mysql的驱动,解压之后是jar包,需安装Java环境方可使用。需要mysql connector java的朋友们可以前来下载使用。

AI报告撰写实战指南:从提示词工程到全流程优化的底层逻辑与实践突破

传统AI写作常被诟病为“信息拼贴”——模型虽能生成文本,却常出现逻辑断裂、数据矛盾、风格不符等问题。而“全流程优化”则是通过系统化设计,将报告生成拆解为需求解析→数据对齐→提示词设计→初稿生成→迭代优化→格式适配六大环节,每个环节均通过技术手段提升输出质量。提示词工程:本质是通过结构化指令(如角色设定、任务分解、格式约束、示例引导)精准控制模型输出方向,是连接用户需求与模型能力的“翻译器”。全流程优化。

2501_92808811的博客 884

【JSP】与MySQL初次连接测试成功

各个配件版本 Tomcat:apache-tomcat-9.0.31 Eclipse:eclipse-jee-2019-12-R-win32-x86_64 JDK:jre1.8 MySQL: 8.0.17 MySQL Community Server jdbc:mysql-connector-java-8.0.17 我并没有单独下载JDBC,在安装MySQL的时候选custom自定义,然后选MySQL本体和Connect/J 就行 建个MySQL数据库demo和表user 为了用GUI使用MySQL,我又下

痛苦的时候装出幸福相,这不是那么难做到的事 698

DataEaseV2.9 本地开发环境搭建与调试指南

本文详细指导如何搭建DataEase V2.9的本地开发环境,涵盖从软件准备、源码获取、数据库初始化到在IDEA中配置、编译和调试的全过程。重点解决了本地运行环境的关键配置与常见问题,帮助开发者高效开启DataEase的定制化开发与二次开发。

weixin_29290863的博客 142

connectorj测试

测试connectoj

weixin_45517132的博客 586

用HFSS复现经典论文:从零搭建带孔缝屏蔽箱体模型(附完整建模步骤与避坑指南)

本文详细介绍了如何使用HFSS电磁仿真软件复现经典论文中的带孔缝屏蔽箱体模型,包括从零搭建模型、设置激励与边界条件、求解优化及结果验证的全过程。特别提供了建模中的布尔运算陷阱、激励设置技巧等实操难点的避坑指南,帮助工程师和学生深入理解电磁屏蔽效能研究。

weixin_30530339的博客 158

激光可燃气体传感器:核心技术环节分析

激光可燃气体传感器核心技术涵盖七个维度:1)TDLAS光谱吸收与调制技术(检测下限ppm级);2)DFB激光器与双闭环温控系统(波长稳定性±0.0036nm);3)微弱信号处理技术(信噪比提升60dB);4)环境补偿算法(温压补偿误差<±1%);5)本质安全防爆设计(ExiaIICT4Ga等级);6)智能边缘计算(STM32L476芯片);7)多重性能验证(响应时间<1秒)。通过微型化、多气体检测等创新,该技术已在工业安全等领域替代传统方案,实现高精度检测。(149字)

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1042

IntelliJ IDEA+Mysql connecter/j JDBC驱动连接

在IntelliJ IDEA中用connecter/j jdbc驱动连接MYSQL 以下是解决过程,待整合。。。有点懒,有空再改 官方文档:https://www.cnblogs.com/cn-chy-com/p/10145690.html 创建了mysql新用户:https://blog.csdn.net/weixin_38091140/article/details/82983229 ...

weixin_30911451的博客 321

Multisim实战:从8选1到32选1数据选择器的完整搭建指南(附常见问题解决)

本文提供了一份详尽的Multisim实战指南,手把手教你从基础的8选1数据选择器开始,逐步级联搭建16选1乃至32选1数据选择器。文章深入剖析了级联的核心逻辑、片选方案以及使用译码器的专业方法,并附带了电源连接、输出冲突、信号毛刺等常见问题的诊断与解决技巧,帮助电子工程学生和爱好者扎实掌握数字电路的系统设计与仿真调试。

dd012的博客 730

java与mysql连接 使用mysql-connector-java连接msql

在java中,使用mysql的语法筛选数据库信息,轻松学习如何建立与mysql以及使用mysql语法。

m0_73952463的博客 7107

npm install 时出现npm error code ENOTFOUND和npm error network request to https://registry.npmjs.org的解决方案

本文主要介绍了npm install 时出现npm error code ENOTFOUND和npm error network request to https://registry.npmjs.org 的解决方案,希望能对使用npm的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 6万+

使用LSTM实现自动调制识别(RML2018.01a)

目录一、LSTM的代码实现1.1 导入包1.2 数据读取及数据集划分1.3 数据预处理1.4 构建LSTM模型 本文基于RML2018.01a大型数据集,给出LSTM的信号识别的实现方式(附代码) RML2018.01a数据集信息如下: 模型 传送门 CNN/ResNet 使用CNN/ResNet实现自动调制识别(RML2018.01a) LSTM 使用LSTM实现自动调制识别(RML2018.01a)) 一、LSTM的代码实现 1.1 导入包 import numpy as np

QAQIknow的博客 6123

手把手教你JAVA如何连接MYSQL-mysql-connector-j-8.0.32.jar

手把手教你JAVA如何连接MYSQL-mysql-connector-j-8.0.32.jar,以及报错处理

u013364875的博客 1万+

虚幻商城 Quixel 免费资产一键入库

在免费领取所有Megascans之后,我们只是有了获取 Quixel Megascans 资产的资格,但是没有入 Fab 库,本文将讲解通过脚本将 Quixel 所有资产入库 Fab。

一碗清深的博客 3325

Java基础 - JDBC操作数据库(MySql)

JDBC是Java语言操作数据库的一套接口,也就是规范,具体的实现需要各个数据库厂商去实现。比如我们在使用JDBC去连接mySql数据库的时候,我们必须要依赖一个叫做mysql-connector-java的jar包,这里面封装的就是mySql对于JDBC的实现。

软件测试入门笔记 6149

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JDBC

JDBC

weixin_45427945的博客 2320

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JDBC学习1

Java DataBase Connectivity Java 数据库连接, Java语言操作数据库。

weixin_53263488的博客 2500

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Debug】mysql-connector-java-8.0.jar包下载安装,导入jar包方法

使用Batch批处理时,需要重新导入新版mysql-connector-java包。不然连接不上数据库。 下载jar包 进入官网,点击下载。 https://dev.mysql.com/downloads/file/?id=477058 导入jar包方法 先把新jar包复制进工程。 右键工程 把旧jar包移除。 添加新jar包 ...

一起进步 1万+

mysql-connector-java 到底有什么用

我们在搭建项目的框架时,无论是直接拷贝jar包,还是在pom文件中配置maven依赖,都会遇到mysql-connector-java。从名字上来看,我们知道它与mysql有关。那么它到底有什么用,我觉得有一大部分读者朋友弄不清。大多数人在搭建项目时,都是直接复制,也不管到底复制了什么,直接从上一个项目的maven依赖复制到新的项目的pom文件中。 "java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver"是一个很常见的异常,出现了这个异常说明

毛惜时的博客 1万+

mysql-connector-java 和 mysql-connector-j 关系

之前常见的 MySQL connector 的 Maven 配置如下图

DouMiaoO_Oo的博客 8361

mysql 驱动包 mysql-connect-java

mysql的驱动包 mysql-connect-java 内部封装了jdbc: jdbc(java database connectivity):本身是由一组接口组成 , 可以使得Java编译来访问各种数据库 无需自己实现接口,这些接口的实现类由第三方数据库厂商实现 jdbc的核心 接口或类 作用 DriverManager类 创建数据库的连接 Connection 接口 创建一个连接对象 Statement 接口 代表一条发送给服务器的sql语句 ResultSet

不知而求知_的博客 9073

mysql-connector-java 驱动jar包下載

mysql驱动 jar包下载;JAVA 数据库连接;

欢迎来到betterManchester的博客 7497
上一篇: MySQL 8.0.31并行构建索引特性管窥
下一篇: 图文结合带你搞懂InnoDB MVCC
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值