java - 结果集 "column not found"与 c3p0

标签 java mysql c3p0

我有一个对数据库的查询,结果是通过 java.sql.ResultSet 获得的,因为这个查询是动态的,过去返回的列数可能是 5 或 7使用相同的代码,它会生成一个“找不到列的异常”,并包含在以下捕获中:

try{
    sTemp = this.rsResults.getString("col3");
   }catch(Exception e){}

但现在使用相同的 try 和 catch(唯一的区别是现在我正在使用 combopooldatasource 和它们的连接),我得到两个不属于 catch 的异常。

我该如何改进,是否有更好的方法来检查列是否存在? c3p0 是否必须根据 (SQLState: S0022) column not found error 强制测试连接?

Error n1 - in the com.mchange.v2.c3p0.impl.NewProxyResultSet.getString qlUtils.toSQLException() - Attempted to convert SQLException to SQLException. Leaving it alone. [SQLState: S0022; errorCode: 0]
java.sql.SQLException: Column 'col3' not found.

Error n2 -  DefaultConnectionTester.statusOnException() - Testing a Connection in response to an Exception:
java.sql.SQLException: Column 'col3' not found.

ps:使用的驱动是同一个org.gjt.mm.mysql.Driver

最佳答案

c3p0 在内部测试连接的任何类型的异常,但来自此测试的异常不会被抛出或对客户端代码不可见。您看到它只是因为您在 DEBUG 级别记录 c3p0 输出。 c3p0 的东西应该记录在 INFO 以供正常使用。如果您以 DEBUG-ish 级别登录,您将看到各种警告消息和堆栈跟踪。

关于java - 结果集 "column not found"与 c3p0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196790/

相关文章:

java - 如何让flatMap在后台线程执行

java - Spring Cloud Sidecar 配置问题

java - 没有必要将 super() 放在构造函数中吗?

php - MySQL 系统中的初期 bug

java - SQL 关闭连接 - 需要增加超时吗?

java - 重写为 MVC 后 GUI 无法正常工作

Mysql 与未知列匹配

mysql - 当变量在每一行中的长度不同时,如何将SAS中的字符转换为数字?

sql-server - MSSQL JDBC 驱动程序在首次连接时不会连接到镜像故障转移合作伙伴

java - 连接池 C3P0 日志记录