连接数据库空异常

解决过程(嫌麻烦可以直接看结论):

  1. 首先我以为是我的数据库驱动名字什么的没有写对,但是确实是对的,使用的是
com.mysql.cj.jdbc.Driver

,也没有发现多余的空格什么的
2. 于是我在数据库工具类内部重新写了一个test方法进行数据库连接的测试,结果发现可以成功连接数据库
3. 然后我又在外部重新创建了test类,通过new一个数据库工具类对象调用方法,然后发现也成功了
4. 于是我对比test类和DaoImpl类的区别就是DaoImpl类实现了一个接口,虽然说不太可能有影响但本质排除法的原则,我将test类也实现了Dao接口,结果发现还是连接成功了,所以知道问题不是出在实现接口上。
5. 再然后我在出现错误的DaoImpl类里面也写了一个test方法连接数据库,发现还是成功了,然后我比较test方法和错误的方法的区别,唯一的区别就是错误的方法是重写的,于是我以为是重写的原因,然后我将test方法也改成重写,结果发现还是成功了,我就百思不得其解。
6. 细想过后我又发现一个不同的地方,那就是每次我一启动服务器就报空异常,不启动直接在idea里面连接就正常,于是我又觉得是tomcat的问题,然后想到报的异常是没有驱动,恍然大悟,可能是tomcat没有数据库连接驱动的包,然后就在tomcat的lib目录下粘贴了数据库连接的jar包,结果果然成功了
7. 然后博主又反思,为什么之前写javaweb项目的时候没有数据库驱动也能成功连接数据库呢,然后找到以前的项目进行对比,发现以前的项目使用的是通过配置context.xml方法配置数据源,我以为是这个原因,然后也在该项目配置数据源,然后删掉了tomcat的lib目录的数据库驱动包,然后启动服务器,结果竟然报了跟之前一样的错误,然后我又加上驱动包,又成功了,然后我又删除了驱动包,驱动之前的项目,结果还是可以连接,我想为什么这个没有驱动也可以连接呢,后面想到会不会是其实他是有驱动的只是我没看到呢,然后百度tomcat启动时会加载两个地方的依赖,一个是tomcat自身目录下的lib目录,还有一个是WEB-INF下自己创建的lib目录,我一看之前的项目,果然在WEB-INF下有一个lib目录,里面有数据库驱动,于是真相大白了,我接着在原本的项目移动了lib目录的w位置,然后启动服务器,连接成功!

Original: https://www.cnblogs.com/xiaoye-Blog/p/16514399.html
Author: 小也取不到名字
Title: 连接数据库空异常

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590026/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java C 类自动转换规则

    C类型转换规则 posted @2018-05-05 21:34 zengkefu 阅读(194 ) 评论() 编辑 Original: https://www.cnblogs.c…

    Java 2023年5月29日
    081
  • 进程外Session

    1、Session保存在SQLServer中配置方法: 1)运行.NetFramework安装目录下对应版本的aspnet_regsql.exe 来创建相关的数据库、表和存储过程等…

    Java 2023年5月30日
    054
  • nginx 禁止未绑定的域名访问

    nginx 禁止未绑定的域名访问 方法1: csharp;gutter:true; server { listen 80 default_server; #不指定 server_n…

    Java 2023年5月30日
    070
  • Java核心技术-Lambda

    lambda表达式就是一个代码块以及必须传入代码的变量规范。lambda表达式就是把一个代码块作为参数,放在参数列表里面进行传递,共这个方法使用。数学上带参数变量的表达式就成为la…

    Java 2023年6月5日
    071
  • 【java多线程】线程的状态示意以及线程方法讲解

    一、java线程的状态 public enum State { /** * Thread state for a thread which has not yet started….

    Java 2023年5月29日
    080
  • CentOS 7上重新编译安装nginx

    CentOS 7的源所提供的nginx几乎不包含任何扩展模块;为了能够使用一些扩展模块,我们需要从源代码重新编译安装nginx。 目前最新版的源代码是1.6.1。下载解压后先不要急…

    Java 2023年5月30日
    070
  • 【软件构造】Java中的接口Interface

    【软件构造】Java中的接口Interface 1.前言 在Lab2中,要求通过Graph接口达到不同种类的实现目标,实验过程中也多次用到了java接口这一概念,编程时涉及了很多需…

    Java 2023年6月5日
    082
  • [Java] HashMap 源码简要分析

    允许null作为key/value。 不保证按照插入的顺序输出。使用hash构造的映射一般来讲是无序的。 非线程安全。 内部原理与Hashtable类似。 源码简要分析 java;…

    Java 2023年5月29日
    068
  • python函数

    在 Python 中,使用 def 关键字定义函数:实例 def my_function(): print("Hello from a function") 如…

    Java 2023年6月9日
    081
  • 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类。 首先要知道包的概念,Java中一个包是指一个package…

    Java 2023年6月15日
    060
  • Linux 实用命令

    实用命令: 1、查看端口占用情况 查看该端口是&…

    Java 2023年6月8日
    097
  • 【二】pig4cloud项目一键build — 编写发布脚本

    在开发测试阶段,代码从仓储发布到测试服务器总是少不了的过程,在这个过程中我喜欢把一些繁琐的步骤全部全部聚合到一个脚本里面,只需要执行一个脚本或者把脚本配置到jenkins上通过按钮…

    Java 2023年6月8日
    084
  • 谷歌浏览器安装react-developer-tools报错

    谷歌浏览器用一下react-developer-tools插件,结果使得原来的本来可以运行的react项目也报错,类似下面这种:Uncaught TypeError: Cannot…

    Java 2023年6月6日
    094
  • Docker 完整版教程

    Docker 安装 一、安装前必读 在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。 注意:本文的…

    Java 2023年6月16日
    064
  • 单线程的Redis有哪些慢动作?

    前言 为什么 Redis 这么火? 键和值的保存形式? 为什么哈希表操作变慢了? 集合的操作效率? 有哪些数据结构? 不同操作的复杂度? 总结 现在一提到 Redis的第一反应就是…

    Java 2023年6月14日
    089
  • 【SpringCloud-Alibaba系列教程】8.一文学会使用sentinel

    Sentinel 介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统…

    Java 2023年6月5日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球