A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 上海分校-小影 于 2018-5-3 09:55 编辑

jdbc中常见异常原因以及解决方法

第一章:简介

​        在我们java开发者编写代码的过程中,经常会出现一些异常。那么对于运行时异常我们在代码中可以通过抓取(try catch)或者抛出(throws)的方式让代码编译通过。那么,在代码运行的时候,出现异常的时候该怎么解决呢?本文介绍了一些java中常见的异常的原因和解决的方法,最后分享了本人在开发中遇到异常时的一些解决技巧。今天给大家介绍一下jdbc中异常的原因以及解决方法,在这里使用mysql数据库为列。javaSE中常见的异常可以查阅本人上次文章。

第二章:jdbc中常见异常原因以及解决方法


1、java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
异常原因:很明显,这个异常是我们介绍的基础异常之一,找不到类。这个类的路径是com.mysql.jdbc.Driver。这个类是jdbc的驱动类。
解决方法:下载对应数据库的驱动包,添加到工程中。

2、com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown database 'day03'

异常原因:这个异常是mysql的驱动包爆出来的,对于这个异常我不去解析异常的含义,但是我们只要读取异常后面的错误信息就能明白异常的原因:day03数据库存在。这样类似的unknown database ..都是找不到数据库。
解决方法:去指定地址的数据库查看需要连接的数据库是否存在。

3、java.sql.SQLException: null,  message from server: "Host 'hxc' is not allowed to connect to this MySQL server"

异常原因:经常接触持久层的人会经常看到SQLException异常,这个异常的错误有很多种情况,在这里还是主要看后面的内容,hxc这个主机不允许连接到mysql数据库,这个原因是权限不够,查看mysql数据库是否开启了远程连接。需要注意的是,如果mysql没有开启远程连接,只能通过127.0.0.1或者localhost访问。
解决方法:开启mysql远程连接。或者直接通过localhost本地访问。

4、 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

可以发现,这个异常有时SQLException,但是异常的消息不一样。
异常原因:本地的root用户禁止访问数据库,而且使用了密码。使用了用户名和密码都不能访问数据库,那就只能是密码或者用户名错误了。
解决方法:查看是否是密码或者用户名写错了

5、com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'day04.test' doesn't exist

这个异常我同样只看后面的异常信息:表 day04.test不存在。  day04指的是数据库,表名是test。
解决方法:去连接的数据库名为day04的数据库中查看是否有test表。在这里,需要注意数据库别连接错了。

6、com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'id' in 'field list'


异常原因:在表的filed的集合中,不认识id这个列。filed指的就是表的列。说白了,就是操作的表中,没有这个列。
解决方法:去数据库中查看操作的表的列名是否是这个名字。

7、 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'orders' at line 1
异常原因:只要看到You have an error in your SQL syntax,就表是我们的sql语句有异常。所以这个就是我们的sql语句肯定有语法上的错误。错误的位置就是在  orders (near 'orders')这个词的附近。
解决方法:去near关键字后面引号引起的地方的附近检查sql语法上的错我。

8、总结
上节的异常中,都是javaSE的基础异常。我们作为一个java开发者,看到就因该知道错误的原因,迅速定位到错误的位置。但是对于今天的异常,可以发现很多异常有可能是我们没有见到过的,但是仔细可以发现,我也没有在意具体是哪个类的异常。因为有的异常类的各种原因不一样。所以今天,我都是通过异常类后面的错误信息解析异常的原因的。

所以,在开发中,出现异常,我们不妨读一读异常的错误信息,英语稍微有点的基础,可以简单翻译一下,英语不行的可以百度翻译。看看异常的原因,然后再有针对性的解决。另外,下次附上本人对于java开发出现的异常、错误的个人解决步骤总结,希望对初学者能够有所帮助,提高开发和学习效率,高手自动略过。






0 个回复

您需要登录后才可以回帖 登录 | 加入黑马