我正在为一个项目开发一个新模块,该模块应使用 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/