java - 转换 JDBC 连接

标签 java jdbc

我正在为一个项目开发一个新模块,该模块应使用 JDBC 驱动程序连接到 SQL 数据库。我需要使用方法 getConnection() 实现连接接口(interface),该方法的返回类型为 org.forgerock.opendj.ldap.Connection。但是,JDBC 驱动程序返回 com.mysql.jdbc.JDBC4Connection 类型的连接。类型转换给我以下错误:

Exception in thread "main" java.lang.ClassCastException: 
    com.mysql.jdbc.JDBC4Connection cannot be cast to org.forgerock.opendj.ldap.Connection
    at org.forgerock.opendj.virtual.JDBCConnectionFactory.getConnection(JDBCConnectionFactory.java:105)

获取org.forgerock.opendj.ldap.Connection类型的连接而不是com.mysql.jdbc.JDBC4Connection的最佳方法是什么?

JDBCConnectionFactory 类:

public class JDBCConnectionFactory implements ConnectionFactory{
    private final String driverName = "com.mysql.jdbc.Driver";
    private Connection con = null;
    private String ConnectionUrl = "";
    private final String Host;
    private final int Port;
    private final String DbName;
    private final String UserName;
    private final String UserPass;

public JDBCConnectionFactory(final String host, final int port, final String dbName, final String userName, final String userPass) {
        this.Host = host;
        this.Port = port;
        this.DbName = dbName;
        this.UserName = userName;
        this.UserPass = userPass;
        this.ConnectionUrl="jdbc:mysql://"
                .concat(this.Host+":")
                .concat(this.Port+"/")
                .concat(this.DbName);

        try {
                Class.forName(driverName);
            } catch (ClassNotFoundException e) {
                System.out.println(e.toString());
            }
    }

getConnection 方法:

@Override
    public org.forgerock.opendj.ldap.Connection getConnection()throws ErrorResultException {
        try {

            con = DriverManager
                            .getConnection(this.ConnectionUrl,this.UserName,this.UserPass);

            org.forgerock.opendj.ldap.Connection newcon = (org.forgerock.opendj.ldap.Connection) con;
            System.out.println("Connection created.");
            return newcon;
            } catch (SQLException e) {
            System.out.println(e.toString());
            return null;
            }


    }

最佳答案

简短的回答你不能。这就是原因

org.forgerock.opendj.ldap.Connection 不扩展 java.sql.Connection

这应该为您提供更多 Java 中允许的信息

关于java - 转换 JDBC 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020801/

相关文章:

java - 在构建 SpringMVC 上保护上传的文件

java - NetBeans 配置文件菜单丢失

scala - java.sql.SQLException -> 在 spark 的 DataFrame 上使用 .show() 方法时出现 NumberFormatException

java - 读取由制表符分隔的行中的字段

java - 这段代码中的变量怎么可能为空呢?

java - 根据其他变量设置变量值

java - 在 DBUnit 中导出/导入数据类型?

java - JDBC Oracle - 获取查询的解释计划

java - 设置oracle 11g集成jsf spring hibernate

mysql - Ofbiz:无法与 helperName [localmysql] 的数据库建立连接