JDBC程序的常见错误及调试

解决——》CannotGetJdbcConnectionException、GetConnectionTimeoutException 阅读详情

本文是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书《第9章 JDBC技术》的补充内容。

 

       数据库:MySQL

 

在编写应用的时候,为了调试程序方便,可以在异常处理代码中把异常信息显示出来,这样可以根据错误提示调试代码。异常处理代码通常可以写成这样:

try{

…

}catch(Exception e){

   System.out.println(e.toString());

}

下面是一些常见的错误信息:

(1)驱动程序不存在

提示的错误信息如下:

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

后半部分是您在程序中写的驱动程序的名字。

解决方法:仔细检查类名是否写错,如果类名没有写错,则是驱动程序所在的压缩包没有引入工程,想办法引入。

(2)URL写错

提示的错误信息如下:

java.sql.SQLException: No suitable driver

解决方法:仔细检查URL的格式是否正确,不同数据库的URL格式不同。

(3)主机IP地址不正确或者网络不通

提示的错误信息如下:

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

 

** BEGIN NESTED EXCEPTION **

 

java.net.ConnectException

MESSAGE: Connection timed out: connect

 

STACKTRACE:

 

java.net.ConnectException: Connection timed out: connect

       at java.net.PlainSocketImpl.socketConnect(Native Method)

       at java.net.PlainSocketImpl.doConnect(Unknown Source)

       at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

       at java.net.PlainSocketImpl.connect(Unknown Source)

       at java.net.SocksSocketImpl.connect(Unknown Source)

       at java.net.Socket.connect(Unknown Source)

       at java.net.Socket.connect(Unknown Source)

       at java.net.Socket.<init>(Unknown Source)

       at java.net.Socket.<init>(Unknown Source)

       at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)

       at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)

       at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)

       at com.mysql.jdbc.Connection.<init>(Connection.java:393)

       at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)

       at java.sql.DriverManager.getConnection(Unknown Source)

       at java.sql.DriverManager.getConnection(Unknown Source)

       at test.JDBCTest.oracleTest(JDBCTest.java:25)

       at test.JDBCTest.main(JDBCTest.java:12)

** END NESTED EXCEPTION **

解决方法:查看IP地址是否正确,网络是否有问题。

(4)端口错误或者数据库服务器没有启动

提示的错误信息如下:

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

       at java.net.PlainSocketImpl.socketConnect(Native Method)

       at java.net.PlainSocketImpl.doConnect(Unknown Source)

       at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

       at java.net.PlainSocketImpl.connect(Unknown Source)

       at java.net.SocksSocketImpl.connect(Unknown Source)

       at java.net.Socket.connect(Unknown Source)

       at java.net.Socket.connect(Unknown Source)

       at java.net.Socket.<init>(Unknown Source)

       at java.net.Socket.<init>(Unknown Source)

       at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)

       at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)

       at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)

       at com.mysql.jdbc.Connection.<init>(Connection.java:393)

       at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)

       at java.sql.DriverManager.getConnection(Unknown Source)

       at java.sql.DriverManager.getConnection(Unknown Source)

       at test.JDBCTest.oracleTest(JDBCTest.java:25)

       at test.JDBCTest.main(JDBCTest.java:12)

 

 

** END NESTED EXCEPTION **

解决方法:查看端口是否正确,数据库服务器是否启动。

(5)数据库名字不正确

提示的错误信息如下:

java.sql.SQLException: Unknown database 'test2'

解决方法:查看数据库是否存在。

(6)用户名或者口令不正确

提示的错误信息如下:

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

解决方法:确认用户名和口令是否正确。

(7)表名错误

提示的错误信息如下:

java.sql.SQLException: Table 'test.student1' doesn't exist

解决方法:查看表是否存在,表名是否写错。

(8)列名错误

提示的错误信息如下:

java.sql.SQLException: Unknown column 'sid' in 'field list'

解决方案:仔细查看数据库表中的列名。

(9)处理结果集的时候,要获取的列的序号大于列数,或者小于0

提示的错误信息如下:

java.sql.SQLException: Column Index out of range, 4 > 3.

这个错误产生的背景是:数据库表中只有3列,而在取信息的时候使用了rs.getString(4),尤其是在使用循环处理的时候容易犯这样的错误。

(10)执行insert语句的时候,表中的列数与插入语句中的不相同

提示的错误信息如下:

java.sql.SQLException: Column count doesn't match value count at row 1

该错误产生的背景是:数据库表中有3列,而插入的时候给了4个值,SQL语句如下:

insert into student values('0011323','李旭',22,99)。

(11)执行insert语句的时候,主键重复。

提示的错误信息如下:

java.sql.SQLException: Duplicate entry '0011323' for key 1

该错误产生的背景是:1条SQL语句连续执行了两遍,第二遍就出错了。

(12)执行insert语句的时候,值过长

提示的错误信息如下:

java.sql.SQLException: Data too long for column 'id' at row 1

解决方案,查看数据库中列的长度。

 

http://blog.youkuaiyun.com/javaeeteacher

 

从拆箱到跑通:Intel RealSense D435i开箱实测+ROS驱动配置全流程 本文详细记录了Intel RealSense D435i深度相机的开箱体验,并提供了在Ubuntu 22.04与ROS2 Humble环境下,从安装librealsense2 SDK到配置ROS2驱动的完整流程。重点解决了驱动安装、数据流发布、点云对齐以及IMU数据融合等关键步骤,帮助研究者和开发者快速实现D435i与机器人系统的集成。 阅读详情

相关推荐

2025年从零开始:构建你的首个ComfyUI工作流-ComfyUI入门教程

然而,由于它拥有众多的插件节点,以及较为复杂的操作流程,学习起来相对困难。以前面搭建的文生图工作流为例,首先点击功能区的【保存】,然后你的浏览器会出来一个弹窗,你可以进行文件命名,点击确定后浏览器会下载该文件,也就是带“json”后缀的文件,这样我们的工作流就打包成一份文件了。思考一下前面说的,节点是不是需要下载安装才能使用,而我们复用别人的工作流,他用的节点你不一定下载了,因为目前有600多个节点,你不可能全部下载了吧,所以我们日后使用别人的工作流,你会经常出现这样的问题。

weixin_59486588的博客 1456

IDEA2021.3在连接jdbc驱动以及mysql数据库遇到的错误

Exception in thread "main" java.sql.SQLException: The server time zone value '???��������??��??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to u

weixin_64064226的博客 5397

瑞芯微RK3506开发板DSM音频开发避坑指南:从硬件改接到内核配置全流程

本文详细解析了在瑞芯微RK3506开发板上进行DSM音频开发的完整流程与关键避坑点。内容涵盖从硬件改造(如电阻焊接)、内核驱动配置(DTS参数、补丁应用)到系统调试与波形分析的全过程,旨在帮助嵌入式开发者高效实现高信噪比、低成本的音频方案,避免常见错误。

weixin_29164091的博客 410

clickhouse code: 209. DB::NetException: Timeout: connect timed out:

set global on cluster default connections_with_failover_max_tries=10 (默认是3次)查看query log 日志 提示网络超时, 最后定位到问题是ck 底层系统升级造成。2、也可以调整重试次数,降低失败概率。ck 插入数据失败,

qq_35640866的博客 1879

Buck变换器中EA模块的优化设计与稳定性提升策略

本文深入探讨了Buck变换器中误差放大器(EA)模块的核心作用与优化设计。作为系统的“大脑”,EA模块的性能直接决定了电源的稳定性与动态响应。文章详细分析了EA的电路结构、工作原理,并重点阐述了通过优化增益、带宽和相位裕度来提升系统稳定性的策略,同时提供了实用的设计技巧与仿真验证方法。

weixin_29189381的博客 424

unity中简单全景搭建

全景场景能够直观的展现一部分区域的全貌,在全景场景中我们能360°观看周围的景象,仿佛自身就在这个场景中,在场景的外部,我们能发现场景就是一个密封的球体,我们是处在球体的内部观察周围,在球内部观察四周看到的都是球的内表面,所以我们看到的全景其实就是贴在密封球体内的一张全景图片。接下来要介绍的就是如何在unity中用一个球体来搭建全景场景。

qq_31791999的博客 3637

Could not close JDBC Connection java.sql.SQLException: Already closed.

ssm项目,如果启动后不使用过段时间再次访问会报错 Could not close JDBC Connection java.sql.SQLException: Already closed. Caused by: java.net.SocketTimeoutException: Read timed out 项目使用dbcp连接池,但因为时老项目,之前的同事只是在ApplicationContext.xml进行基本配置如下: <bean id="dataSource" class="org

xiaobozhang1993的博客 1037

国产PLC实战:用汇川Easy320搞定TCP通信,手把手教你网口转串口控制设备

本文详细解析了如何使用汇川Easy320 PLC实现TCP通信与串口控制,解决工业自动化中设备间通信协议差异问题。通过实战案例和代码示例,展示了Easy320在协议转换、数据解析和串口转发中的高效应用,帮助工程师快速掌握网口转串口控制技术。

weixin_31774841的博客 502

JDBC的超时时间和常用配置

连接池中的连接被数据库关闭了,应用通过连接池getConnection时,都可能获取到这些不可用的连接,且这些连接如果不被其他线程回收的话,它们不会被连接池被废除,也不会重新被创建,占用了连接池的名额。案例:2019年在对数据库中间件ProxySQL滚动升级时,另一台虚机意外重启导致ProxySQL服务不可用,上层服务出现大量异常访问慢的情况的,通过jstack分析线程情况发现业务系统停止在JDBC的调用上,日志中大量的waiting状态的线程;导致服务长时间处于不可以用的状态,后经过重启服务解决问题;..

【欢迎关注公众号:冬瓜白】 1万+

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

WW、forever的博客 2157

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

编写java报错的查看方式_JDBC 程序的常见错误及调试方法

JDBC 程序的常见错误及调试方法更新时间:2009年06月04日 17:44:15 作者:本文是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书《第9章 JDBC技术》的补充内容。数据库:MySQL在编写应用的时候,为了调试程序方便,可以在异常处理代码中把异常信息显示出来,这样可以根据错误提示调试代码。异常处理代码通常可以写成这样:try{…}catch(Excep...

weixin_32382335的博客 569

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 235

JDBC 程序的常见错误及调试方法

转自:http://www.jb51.net/article/18421.htm 本文是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书《第9章 JDBC技术》的补充内容。 数据库:MySQL  在编写应用的时候,为了调试程序方便,可以在异常处理代码中把异常信息显示出来,这样可以根据错误提示调试代码。异常处理代码通常可以写成这样:  try{

blue_jjw的专栏 800

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JDBC常见问题 -来自sun论坛

JDBC常见问题目录什么是 JDBC 3.0 API? JDBC-ODBC Bridge 是否支持 JDBC 3.0 API 中的新特性? JDBC-ODBC Bridge 是否可以与 applet 一起使用? 我怎样开始调试与 JDBC API 有关的问题? 我如何可以使用 JDBC API 通过网络访问像 Microsoft Access 这样的桌面数据库? 有哪些可用的支持 JDBC 技术的

Intotherain1的专栏 2006

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

20155203 2016-2017-4 《Java程序设计》第9周学习总结

20155203 2016-2017-4 《Java程序设计》第9周学习总结 教材学习内容总结 课堂内容 两个类如果有公共的部分要放在父类中,多次复用。当我们用父类或接口去声明对象的引用生成子类,表现了多态。父类声明的引用,子类生成的对象,构成了多态 类设计的SOLID原则 SRP; OCP; LSP; ISP; DIP; 上帝类和小类: 推荐使用小类,便于复用 ; SRP的内聚性; 开放--封...

weixin_33875564的博客 111

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java数据库连接异常:小白也能懂的解决方案

上实践时发现,它的实时错误提示非常直观,不需要本地搭建环境就能快速验证数据库连接问题。平台内置的代码编辑器会自动标记语法错误,运行结果也一目了然,特别适合新手边学边练。对于想快速验证解决方案的同学,这种免配置的云端开发环境确实能省去不少麻烦。特别是当需要分享问题或协作调试时,直接生成可运行的代码片段比口头描述高效得多。的错误提示时,本质上说明程序无法建立与数据库的通信。今天我就来分享一下自己从踩坑到解决问题的全过程,帮助大家快速理解这个常见异常的应对方法。在这个过程中,最常见的错误姿势包括:将。

GoldEagle19的博客 890

9-21 调试javaweb 数据库连接感想

如何找bug 一步步调试 数据库链接写一个简单的 test 数据库操作 sql语句 写一个类 测试一下 不要忽略细节 最后页面的显示 html "/head"少一个"/"之类 form method="post" 不要写成 do post @WebServlet("/RegisterServlet.do") 不能少 反斜杠 遇到Server To...

weixin_30307267的博客 110

LAB12 Transaction

思路:就是把aotocommit()里面的东西改改就行了。 查询要求可用房间>=所需要的房间。 SQL里面查数字时,不要加单引号。字符串才要。 查询里的set ONHAND=要改成自己的变量名set AVAILABLEROOMS=。 写JDBC还是要仔细才行,因为报错往往很不具体,很难dubug。 转载于:https://www.cnblogs.com/immiao031...

weixin_30498921的博客 71

JDBC常见错误及调试

数据库:MySQL 在编写应用的时候,为了调试程序方便,可以在异常处理代码中把异常信息显示出来,这样可以根据错误提示调试代码。异常处理代码通常可以写成这样: try{ … }catch(Exception e){    System.out.println(e.toString()); } 下面是一些常见的错误信息: (1)驱动程序不存在 提示的错误信息如下: java.lan...

945xiexie's Note 207

JDBC连接数据库出现错误,调试解决

写了代码后出现了3次错误,以下我来教大家解决。 第一个问题: Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary

weixin_45863084的博客 1577
上一篇: Struts 2基础
下一篇: JSP中404错误的解决
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值