怎么在Java中使用DriverManager.getConnection()获取数据库连接?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
DriverManager.getConnection一共有四个重载方法,前三个由public修饰,用来获取不同类型的参数,这三个getConnection实际相当于一个入口,他们最终都会return第四个私有化的getConnection方法,最终向第四个私有化方法的传入参数都是url,java.util.Properties,以及Reflection.getCallerClass(),这个方法是native的
其中Reflection.getCallerClass()是反射中的一个方法,这个方法用来返回他的调用类,也就说是哪个类调用了这个方法,Reflection类位于调用栈中的0帧位置,在JDK7以前,该方法可以传入int n返回调用栈中从0帧开始的第n帧中的类,在JDK7中,需要设置java命令行选项Djdk.reflect.allowGetCallerClass来使用该方法,到了JDK8时,再调用该方法会导致UnsupportedOperationException异常。
JDK8中getCallerClass使用方法变更为getCallerClass(),Reflection.getCallerClass()方法调用所在的方法必须用@CallerSensitive进行注解,通过此方法获取class时会跳过链路上所有的有@CallerSensitive注解的方法的类,直到遇到第一个未使用该注解的类,避免了用Reflection.getCallerClass(int n) 这个过时方法来自己做判断。
在这里每个getConnection都是用CallerSensitive修饰的,调用getCallerClass应该是获取外面使用DriverManager.getConnection()的类的名称,即在class A中调用了DriverManager.getConnection(),则返回class A。
Java DriverManager.getConnection() 方法用于获得试图建立到指定数据库 URL 的连接。DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
getConnection(String url)
参数说明:
url:访问数据库的 URL 路径。
示例
下面的代码利用 getConnection 方法创建与 MySQL 数据库的连接,并返回连接对象。
public Connection getConnection(){
Connection con=null;
try{
Class.forName("com.mysql.jdbc.Driver"); //注册数据库驱动
String url = "jdbc:mysql://localhost:3306/test?user=root&password=root"; //定义连接数据库的url
con = DriverManager.getConnection(url); //获取数据库连接
System.out.println("数据库连接成功!");
}catch(Exception e){
e.printStackTrace();
}
return con; //返回一个连接
}
getConnection(String url,Properties info)
参数说明:
url:访问数据库的 URL 路径。
info:是一个持久的属性集对象,包括 user 和 password 属性。
示例
下面的代码利用 getConnection 方法第一种语法格式,创建与 MySQL 数据库的连接,并返回连接对象。
public Connection getConnection(){
Connection con = null; //定义数据库连接对象
Properties info = new Properties(); //定义Properties对象
info.setProperty("user","root"); //设置Properties对象属性
info.setProperty("password","root");
try{
Class.forName("com.mysql.jdbc.Driver"); //注册数据库驱动
String url = "jdbc:mysql://localhost:3306/test"; //test为数据库名称
con = DriverManager.getConnection(url,info); //获取连接数据库的Connection对象
System.out.println("数据库连接成功!");
}catch(Exception e){
e.printStackTrace();
}
return con;//返回一个连接
}
Connection(String url,String user,String password)
参数说明:
url:访问数据库的 URL 路径。
user:是访问数据库的用户名。
password:连接数据库的密码。
典型应用
下面的代码利用 getConnection 方法创建与 SQL Server 数据库的连接,并返回连接对象。与数据库建立连接成功后的运行结果。代码如下:
private Connection con;
private String user = "sa"; //定义连接数据库的用户名
private String password = ""; //定义连接数据库的密码
private String className = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_database01"; /**创建数据库连接*/
public Connection getCon(){
try{
Class.forName(className);//加载数据库驱动
System.out.println("数据库驱动加载成功!");
con = DriverManager.getConnection(url,user,password); //连接数据库
System.out.println("成功地获取数据库连接!");
}catch(Exception e){
System.out.println("创建数据库连接失败!");
con = null;
e.printStackTrace();
}
return con;
}
运行结果如下:
数据库驱动加载成功!
成功地获取数据库连接!
看完上述内容,你们掌握怎么在Java中使用DriverManager.getConnection()获取数据库连接的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。