我正在寻找一种从java.sql.Connection对象获取密码的方法.我知道DatabaseMetaData对象中有一个getUserName()方法,但是不幸的是没有相应的getPassword()方法.使用Netbeans中的调试器,我可以看到一个密码字段,因此必须有一种使用反射来获取此信息的方法,但是到目前为止,我一直无法弄清楚该怎么做.
解决方法:
正如我所评论的,唯一的方法必须是查看代码.例如,对于使用最新驱动程序(5.1.15)的MySQL.您可以这样获得密码:
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,java,mysql
来源: https://codeday.me/bug/20191208/2092137.html