数据库异常情况

学习web开发的时候遇到了异常com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:  困扰好长时间,百度之后看到有前辈总结数据库的异常,才找到是配置文件的主机名写错了,果断转载。


原文:http://linglxia.iteye.com/blog/1154189




1. 要使用数据库,首先还是要连接数据库的。

连接数据库的步骤:

1加载驱动程序 2.创建指定数据库的URL  才能取得数据库连接对象。

就这个连接老犯错。

2. 这里列几个常犯的错误

  ①没有引入外部mysql-connector-java-bin.jar包

 

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver  (没有找到这个类)

at java.net.URLClassLoader$1.run(Unknown Source)……

   所以在创建工程后,需要引入jar包

   ②.若加载驱动时,将com.mysql.jdbc.Driver写成com.mysql.jdbc.driver

   java.lang.ClassNotFoundException: com.mysql.jdbc.driver

   at java.net.URLClassLoader$1.run(Unknown Source)……

注意,以上两个报的是一样的异常

  ② .端口错误或者服务器没有启动

驱动不存在。。。。

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:  

** BEGIN NESTED EXCEPTION **

java.net.ConnectException

MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect……

 

  ③ .主机localhost写错

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION **

java.net.UnknownHostException

MESSAGE: locahost(很明显的错误)

STACKTRACE:

java.net.UnknownHostException: locahost(未知的主机号)这个错误还好解决,提示很明显的。

 

   ④.加载驱动时,将com.mysql.jdbc.Driver  写成了com.mysql..jdbc.Driver

   java.lang.ClassNotFoundException: com/mysql//jdbc/Driver  (错误在这里得到提示

   at java.lang.Class.forName0(Naticve Method)

   at java.lang.Class.forName(Unknown Source)

驱动不存在。。。。

  

   ⑤ 将数据库名写错(如test->tests)使用的是不存在的数据库

   com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown database 'tests'(提示是未知的数据库

   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)……

驱动不存在。。。。

  

   ⑥.用户名或者密码错误

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

   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)

   可以直接检查这两个是哪个的错误

 

   ⑦.数据库的url写错。如将

String url="jdbc:mysql:/localhost:3306/test";  写成了 String url="jdbc:mysql://localhost:3306/test";

错误提示:

java.sql.SQLException: No suitable driver found for jdbc:mysql:/localhost:3306/test驱动不存在。。。。

 

   ⑧.表名错误(数据库test中的stusinfo表不存在)

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'test.stusinfo' doesn't exist

 

   ⑨.列名错误(age写成了ag,ag是不存在的)

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'ag' in 'field list'

 

   ⑩.当取得数据库的结果集时,要获取的列号 6 大于数据库中的总列数5

java.sql.SQLException: Column Index out of range, 6 > 5.

at com.mysql.jdbc.SQLError.createSQLException

(SQLError.java:910)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值