如何从java.sql.Connection对象中检索密码

我正在寻找一种从java.sql.Connection对象获取密码的方法。我知道DatabaseMetaData对象中有一个getUserName()方法,但遗憾的是没有相应的getPassword()方法。在Netbeans中使用调试器我可以看到密码的字段,所以必须有一种方法来使用反射来获取这些信息,但到目前为止我一直无法弄清楚如何。     
已邀请:
正如我评论的那样,唯一的方法就是查看代码。例如,对于使用最新驱动程序的MySQL(5.1.15)。你可以得到这样的密码:
public static void main(String[] args) throws Exception{
  ConnectionImpl con = (ConnectionImpl) DriverManager.getConnection("jdbc:mysql://localhost:3908/mydb?user=edalorzo&password=mandrake");

   System.out.println(con.getProperties().get("password"));

   con.close();
}
但为此,您需要了解类层次结构及其实现细节。 其他数据库很可能会有所不同。如果您的数据库是开源的,比如MySQL,您可以了解内部构造的详细信息并找到检索密码的方法。     
由JDBC实现者提供,因为用户和密码作为Map传递给驱动程序。 知道密码是什么的一种方法是扩展驱动程序并包含它。
class CustomDriver extends ImplementerDriver {
  @Override
  public Connection connect(String url, Properties info) throws SQLException {
    super.connect(url, info);
    // Extract password from info.
  }

  public String getPassword() {

   ....
  }
}
    
您可以解析服务器XML配置文件以获取连接池参数,并从那里获取密码。复杂的解决方案但它的工作     

要回复问题请先登录注册