Java DriverManager.getConnection()获取数据库连接
DriverManager.getConnection一共有四个重载方法,前三个由public修饰,用来获取不同类型的参数,这三个getConnection实际相当于一个入口,他们最终都会return第四个私有化的getConnection方法,最终向第四个私有化方法的传入参数都是url,java.util.Properties,以及Reflection.getCallerClass(),这个方法是native的
其中Reflection.getCallerClass()是反射中的一个方法,这个方法用来返回他的调用类,也就说是哪个类调用了这个方法,Reflection类位于调用栈中的0帧位置,在JDK7以前,该方法可以传入intn返回调用栈中从0帧开始的第n帧中的类,在JDK7中,需要设置java命令行选项Djdk.reflect.allowGetCallerClass来使用该方法,到了JDK8时,再调用该方法会导致UnsupportedOperationException异常。
JDK8中getCallerClass使用方法变更为getCallerClass(),Reflection.getCallerClass()方法调用所在的方法必须用@CallerSensitive进行注解,通过此方法获取class时会跳过链路上所有的有@CallerSensitive注解的方法的类,直到遇到第一个未使用该注解的类,避免了用Reflection.getCallerClass(intn)这个过时方法来自己做判断。
在这里每个getConnection都是用CallerSensitive修饰的,调用getCallerClass应该是获取外面使用DriverManager.getConnection()的类的名称,即在classA中调用了DriverManager.getConnection(),则返回classA。
JavaDriverManager.getConnection()方法用于获得试图建立到指定数据库URL的连接。DriverManager试图从已注册的JDBC驱动程序集中选择一个适当的驱动程序。
语法1
getConnection(Stringurl)
参数说明:
- url:访问数据库的URL路径。
示例
下面的代码利用getConnection方法创建与MySQL数据库的连接,并返回连接对象。
publicConnectiongetConnection(){ Connectioncon=null; try{ Class.forName("com.mysql.jdbc.Driver");//注册数据库驱动 Stringurl="jdbc:mysql://localhost:3306/test?user=root&password=root";//定义连接数据库的url con=DriverManager.getConnection(url);//获取数据库连接 System.out.println("数据库连接成功!"); }catch(Exceptione){ e.printStackTrace(); } returncon;//返回一个连接 }
语法2
getConnection(Stringurl,Propertiesinfo)
参数说明:
- url:访问数据库的URL路径。
- info:是一个持久的属性集对象,包括user和password属性。
示例
下面的代码利用getConnection方法第一种语法格式,创建与MySQL数据库的连接,并返回连接对象。
publicConnectiongetConnection(){ Connectioncon=null;//定义数据库连接对象 Propertiesinfo=newProperties();//定义Properties对象 info.setProperty("user","root");//设置Properties对象属性 info.setProperty("password","root"); try{ Class.forName("com.mysql.jdbc.Driver");//注册数据库驱动 Stringurl="jdbc:mysql://localhost:3306/test";//test为数据库名称 con=DriverManager.getConnection(url,info);//获取连接数据库的Connection对象 System.out.println("数据库连接成功!"); }catch(Exceptione){ e.printStackTrace(); } returncon;//返回一个连接 }
语法3
Connection(Stringurl,Stringuser,Stringpassword)
参数说明:
- url:访问数据库的URL路径。
- user:是访问数据库的用户名。
- password:连接数据库的密码。
典型应用
下面的代码利用getConnection方法创建与SQLServer数据库的连接,并返回连接对象。与数据库建立连接成功后的运行结果。代码如下:
privateConnectioncon; privateStringuser="sa";//定义连接数据库的用户名 privateStringpassword="";//定义连接数据库的密码 privateStringclassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; privateStringurl="jdbc:sqlserver://localhost:1433;DatabaseName=db_database01";/**创建数据库连接*/ publicConnectiongetCon(){ try{ Class.forName(className);//加载数据库驱动 System.out.println("数据库驱动加载成功!"); con=DriverManager.getConnection(url,user,password);//连接数据库 System.out.println("成功地获取数据库连接!"); }catch(Exceptione){ System.out.println("创建数据库连接失败!"); con=null; e.printStackTrace(); } returncon; }
运行结果如下:
数据库驱动加载成功!
成功地获取数据库连接!
到此这篇关于JavaDriverManager.getConnection()获取数据库连接的文章就介绍到这了,更多相关JavaDriverManager.getConnection()内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!