Tomcat 配置的数据源,测试连接数据库报告类转换错误

本文介绍了在配置Tomcat数据源并尝试连接数据库时遇到的类转换错误。通过分析错误原因,发现是将PoolGuardConnectionWrapper(实现了java.sql.Connection)错误地转换为了com.mysql.jdbc.Connection。同时,还指出Statement应使用java.sql.Statement。作者分享了这个问题及其解决方法,以帮助初学者避免此类常见错误。
摘要由CSDN通过智能技术生成


tomcat 配置的数据源如下:
<Resource name="jdbc/TestDB" 
auth="Container" 
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb" />

写的测试类如下:
package com.telenav.Brant;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class ConnectDB {
public ConnectDB(){}

public static void testDB(){
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/TestDB");
Connection con = (Connection) ds.getConnection();
Statement stmt = (Statement) con.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
while(rs.next()){
System.out.println(rs.getString(2));
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


解决方法:

Connection con = (Connection) ds.getConnection();

Connection 应该是  java.sql.Connection.  但是用的是: com.mysql.jdbc.Connection

tomcat的数据源的PoolGuardConnectionWrapper 实现的是  java.sql.Connection. 把它转换为  com.mysql.jdbc.Connection肯定出错

Statement 必须用  java.sql.Statement

对于我这种javaEE小白来说很容易犯这种错误,所以这里贴出来,希望以后学习的小伙伴可以避免

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值