【发布时间】:2015-11-20 11:07:33
【问题描述】:
我陷入了一个庞大而古老的项目(j2sdk 1.4.2、Tomcat 4.1.29、MySQL 5.0.51a)中,我需要在工作中安装一个新的开发环境。
我的 Tomcat 可以访问一个 MySQL 数据库,它处理来自我的 Java 应用程序的请求。在该数据库中,一些表包含我的应用程序所需的布尔值。
因此,在应用程序中,准备好语句,添加参数,然后启动请求并将此请求的结果集存储在自定义 SQLResult 对象中(这是自定义的一部分)我的公司制作的框架,对此无能为力——尽管它与经典的java.sql.ResultSet 对象非常相似)。
问题是:当 java 应用程序请求一些存储在数据库中的数据为TINYINT(1) 时,这些数据会以java.lang.Integer 而不是java.lang.Boolean 的形式返回给 java 应用程序,就像我想的那样。
注意:Tomcat服务器使用的JDBC连接器版本是mysql-connector-java-3.0.11-stable。
到目前为止我测试的内容(没有结果):
- 升级/降级 MySQL 连接器
- 添加
tinyInt1isBit=<true/1>作为我的连接字符串的结尾 - 升级/降级 MySQL 数据库,始终使用与源代码一起提供的相同数据转储
- 还有很多其他的东西我什至不记得了,因为我测试了很多东西:-/
我现在很确定问题出在 Tomcat 服务器使用的 MySQL JDBC 连接器上。因此,当我更改连接器的版本时,其他任何东西都不起作用(意思是,甚至无法连接用户)。
有什么想法吗?
编辑:我忘了准确地说,在 java 应用程序的另一部分,对存储为 DECIMAL 的数据的请求返回为 java.lang.String!这也是我必须解决的一个主要问题,但我认为这两者是同一个原因。
【问题讨论】:
-
您说“返回到 Java 应用程序”,但如果您没有使用标准的
ResultSet,听起来您的自定义代码正在准确识别 TINYINT 列并将其视为数字类型. -
听起来你需要为这种情况创建一个解决方法帮助程序类...
-
@Jordi Castilla:不幸的是,我还不能添加任何代码,因为这段代码应该可以正确运行(因为它已经在生产环境中运行了好几年了)。目前,我的目标是重新创建一个稳定的开发环境,让一切都尽可能顺利地运行,并且无需修改任何代码。这就是为什么我认为连接器可能是导致错误的原因。但我不知道为什么:-/
标签: java tomcat mysql-connector