IDEA中JSP项目通过jdbc连接MySql数据库。Mysql版本连接不上问题解决办法。MySql8.0前后版本连接区别_idea的jsp无法运行jdbc-程序员宅基地

技术标签: jsp  mysql  jdbc  数据库  intellij idea  

1.先创建一个JSP项目。不会创建的可以参考csdn文章https://blog.csdn.net/qq_41765030/article/details/106086177
2.下载Mysql 的jdbc驱动,官网下载地址:https://dev.mysql.com/downloads/connector/j/
注:jdbc版本必须支持Mysql版本,一般高版本jdbc驱动会支持略低数据库版本,如:jdbc 8.0.20支持MySql8.0.19版本。此处不做过多讲解,版本匹配可自行查询。
不支持的版本会造成无法连接的错误
此处演示最新版本下载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此处下载的为zip,下载后解压,里面有一个后缀为.jar的数据包。接下来要使用此jar包

3.回到我们的jsp项目中,打开目录WEB-INF中lib目录,将下载好的驱动**jar包 !jar包!jar包!**放入lib目录中
注:如果WEB-INF中没有lib目录则手动创建一个名为lib的文件夹
在这里插入图片描述
4.在MySql中新建数据库。
新建一个表
可以通过代码创建

在这里插入代码片

CREATE TABLE `websites` (
	`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
	`name` CHAR ( 20 ) NOT NULL DEFAULT '' COMMENT '站点名称',
	`url` VARCHAR ( 255 ) NOT NULL DEFAULT '',
	`alexa` INT ( 11 ) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
	`country` CHAR ( 10 ) NOT NULL DEFAULT '' COMMENT '国家',
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 10 DEFAULT CHARSET = utf8;

然后插入数据

INSERT INTO `websites`
VALUES
	( '1', '百度', 'https://www.baidu.cm/', '1', 'CN' ),
	( '2', 'CSDN', 'https://www.csdn.net', '1', 'CN' ),
	( '3', '腾讯', 'http://www.qq.com', '1', 'CN' ),
	( '4', '微博', 'http://weibo.com/', '1', 'CN' ),
	( '5', '淘宝', 'https://www.taobao.com/', '1', 'CN' );

5.编辑index.jsp代码如下 版本关系在注释中讲解

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"
         import="java.sql.*"
%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title></head>
<body><%
    //star
    Class.forName("com.mysql.cj.jdbc.Driver");
    String url = "jdbc:mysql://localhost:3306/world?useSSL=false&serverTimezone=UTC";
    //    8.0以后版本加载驱动
    //    3306为端口号根据自己数据库端口设置--
    //    ...3306/"数据库名称"?useSSL......
    //    com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。
    //    MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。
    //end
    //

    //star
    //    Class.forName("com.mysql.jdbc.Driver");
    //    String url = "jdbc:mysql://localhost:3306/world";
    //    8.0以前版本加载驱动方式
    //end

    String un = "root";         //MySql用户名
    String pa = "123456";       //MySql密码
    Connection con = DriverManager.getConnection(url, un, pa);
    Statement st = con.createStatement();
    String sql = "select * from websites";
    ResultSet rs = st.executeQuery(sql);
%>
<table border="1" cellpadding="0" cellspacing="0">
    <caption>用户列表</caption>
    <tr>
        <td>id</td>
        <td>用户名</td>
        <td>密码</td>
    </tr>
    <%while (rs.next()) {
     %>
    <tr>
        <td><%=rs.getInt("id") %>
        </td>
        <td><%=rs.getString("name") %>
        </td>
        <td><%=rs.getString("url") %>
        </td>
    </tr>
    <%} %></table>
</body>
</html>

6.查询结果 。 成功!

在这里插入图片描述
总结:jsp连接MySQL时除了代码逻辑和拼写错误以外,jdbc也可能出现版本不匹配问题,一定要使用兼容的jdbc驱动,不同的版本中连接代码有些差异。
附:8.0以前的版本和8.0以后版本驱动加载代码区别

Class.forName("com.mysql.jdbc.Driver");//8.0以前驱动加载
Class.forName("com.mysql.cj.jdbc.Driver");//8.0以后驱动加载
String url = "jdbc:mysql://localhost:3306/world";
//8.0以前url代码
String url = "jdbc:mysql://localhost:3306/world?useSSL=false&serverTimezone=UTC";
//8.0以后url代码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41765030/article/details/106087519

智能推荐

Ubuntu 16.04 安装远程登录服务器 SSH_vxcode 远程链接 ubuntu-程序员宅基地

文章浏览阅读276次。安装SSHsudo apt-get install ssh_vxcode 远程链接 ubuntu

gossip-程序员宅基地

文章浏览阅读55次。celebrity ----a famous peopleobama ---- politicatonobject ----反对转载于:https://www.cnblogs.com/shenfengok/archive/2012/07/11/2586893.html

在linux中使用setns()设置pid namespace-程序员宅基地

文章浏览阅读3.1k次。以下代码展示了 setns() 的用法,#define _GNU_SOURCE#include <fcntl.h>#include <sched.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>#in_setns

可逆矩阵性质总结_线性代数下的行列式和矩阵-程序员宅基地

文章浏览阅读5.7k次。实际意义求线性方程组线性方程组一般有 m 个常数项,n 个未知数,m * n 个系数。若常数项全为 0 ,则为齐次线性方程组;若未知数全为 0 ,则称为零解。于是我们考虑的问题是:齐次方程组:是否存在非零解,以及存在的条件通解的结构与性质解法非齐次方程组:是否有解,以及有解的条件是什么有多少解以及对应解数量的条件是什么多解的结构与性质解法行列式二,三阶行列式行列式最初的作用就是求解线性方程组!例如..._可逆矩阵一定是实数矩阵吗

centos8的80端口不通问题记录_为什么keepalived连不上本地的80端口-程序员宅基地

文章浏览阅读5.2k次。1、首先是安装了nginx并启动了服务,查看80端口正常listening2、通过其他机器访问网页无法连接,查看telnet到80端口也不通。初步怀疑跟防火墙有关3、查看iptables,发现有部分默认规则,但都是accept。默认的filter表也都是accept,尝试用iptables -F清空规则表后问题依旧4、之前使用的是ubuntu系统,主要通过的就是iptables来控制..._为什么keepalived连不上本地的80端口

Mysql5.7安装 Gtid原理作用+主从复制_gtid在主从复制的作用-程序员宅基地

文章浏览阅读1.3k次,点赞4次,收藏3次。Gtid的作用Gtid,采用了新的复制协议,旧协议是,首先从服务器上在一个特定的偏移量位置连接到主服务器上一个给定的二进制日志文件,然后主服务器再从给定的连接点开始发送所有的事件。新协议有所不同,支持以全局统一事务ID(GTID)为基础的复制。当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务。GTID复制是全部以事务为基础,使得检查主从一致性变得非常简单。如果所有主库上提交的事务也同样提交到从库上,一致性就得到了保证。Gtid的工作原理1.当一个事务在主库端执行并提交时,产生GTID,一_gtid在主从复制的作用

随便推点

Vue 非常实用的自定义指令_v-haspermission-程序员宅基地

文章浏览阅读193次。在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也允许注册自定义指令。它的作用价值在于当开发人员在某些场景下需要对普通 DOM 元素进行操作。Vue自定义指令有全局注册和局部注册两种方式。先来看看注册全局指令的方式,通过 Vue.directive( id, [definition] ) 方式注册全局指令。然后在入口文件中进行 Vue.use() 调用。批量注册指令,新建 directives/index.js 文件在 main.js 引入并调用。_v-haspermission

Android Studio中File对象的FileList()方法返回NULL的问题_android file是文件 file.list()返回什么-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏2次。今天想写一个能获取文件列表的demo,期间遇到了一个问题:File对象的FileList()方法返回NULL。 我的代码private void initFiles() { rootPath = Environment.getExternalStorageDirectory().getPath(); Log.d(TAG, "initFiles: "+rootPath);_android file是文件 file.list()返回什么

初识防火墙_实验1 初识防火墙-程序员宅基地

文章浏览阅读116次。初识防火墙目录初识防火墙实验环境实验目的具体步骤实验总结实验环境实验目的实现PC1pingServer具体步骤1.规划IP​ PC1IP:192.168.1.1 掩码 24 网关:192.168.1.254​ serverIP:200.1.1.1 掩码 24 网关:200.1.1.2542.防火墙设置<USG6000V1>syEnter system view, return user view with Ctrl+Z.[USG6000V1]sys FW[FW_实验1 初识防火墙

java 学习历程_ydb集成java-程序员宅基地

文章浏览阅读908次。基础稍差或零基础 : 视频学习周期建议为 20-30 天,具体根据学生自学能力,自行合理安排时间。 第一阶段: 初级(8-12 天) 点击下载 第一阶段:Java 初级 ● Java 开发前奏 ● Java 编程基础 ● 面向对象上 ● 面向对象下 ● 多线程 ● JavaA_ydb集成java

RPN 区域选取网络 region proposal network_region proposal networks ( rpn )翻译-程序员宅基地

文章浏览阅读663次。转:懒人元(侵删) 注:转自其他博客,仅供学习参考。  RPN全称是Region Proposal Network,RegionProposal的中文意思是“区域选取”,也就是“提取候选框”的意思,所以RPN就是用来提取候选框的网络。1. RPN的意义  RPN第一次出现在世人眼中是在Faster RCNN这个结构中,专门用来提取候选框,在RCNN和Fast RCNN等物体检测架构中,用来提取候选框的方法通常是Selective Search,是比较传统的方法,而且比较耗时,在CPU上要2s一.._region proposal networks ( rpn )翻译

stm32正常运行流程图_STM32单片机的基础知识77条!这个要收藏一下哦-程序员宅基地

文章浏览阅读1.5k次。1、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL2、 MCO[2:0]可以提供4源不同的时钟同步信号,PA83、 GPIO口有两个反向串联的二极管用作钳位二极管。4、 ICode总线,DCode总线、系统总线、DMA总线、总线矩阵、AHB/APB桥5、在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟6、STM32复位有三种:系统复位、上电复位、备份区..._stm32主程序流程图

推荐文章

热门文章

相关标签