Java DriverManager.getConnection()获取数据库连接

 更新时间:2021年01月21日 11:51:05   作者:c语言中文网  
这篇文章主要介绍了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 驱动程序集中选择一个适当的驱动程序。

语法1

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; //返回一个连接
}

语法2

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;//返回一个连接
}

语法3

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()获取数据库连接的文章就介绍到这了,更多相关Java DriverManager.getConnection() 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现窗体程序显示日历

    Java实现窗体程序显示日历

    这篇文章主要为大家详细介绍了Java实现窗体程序显示日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • springBoot集成redis(jedis)的实现示例

    springBoot集成redis(jedis)的实现示例

    Redis是我们Java开发中,使用频次非常高的一个nosql数据库,本文主要介绍了springBoot集成redis(jedis)的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • springboot控制层传递参数为非必填值的操作

    springboot控制层传递参数为非必填值的操作

    这篇文章主要介绍了springboot控制层传递参数为非必填值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 实例讲解Java中random.nextInt()与Math.random()的基础用法

    实例讲解Java中random.nextInt()与Math.random()的基础用法

    今天小编就为大家分享一篇关于实例讲解Java中random.nextInt()与Math.random()的基础用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Java判断List中相同值元素的个数实例

    Java判断List中相同值元素的个数实例

    今天小编就为大家分享一篇Java判断List中相同值元素的个数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • BaseJDBC和CRUDDAO的写法实例代码

    BaseJDBC和CRUDDAO的写法实例代码

    这篇文章主要介绍了BaseJDBC和CRUDDAO的写法实例代码,代码注释十分详细,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Myeclipse工程发布时端口占用问题的解决方法

    Myeclipse工程发布时端口占用问题的解决方法

    这篇文章主要介绍了Myeclipse工程发布时端口占用问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • springBoot中的CORS跨域注解@CrossOrigin详解

    springBoot中的CORS跨域注解@CrossOrigin详解

    这篇文章主要介绍了springBoot中的CORS跨域注解@CrossOrigin详解,通常,服务于 JS 的主机(例如 example.com)与服务于数据的主机(例如 api.example.com)是不同的,在这种情况下,CORS 可以实现跨域通信,需要的朋友可以参考下
    2023-12-12
  • 一文了解自定义MVC框架实现

    一文了解自定义MVC框架实现

    这篇文章主要为大家详细介绍一下MVC框架自定义实现过程,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-07-07
  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    Servlet+JavaBean+JSP打造Java Web注册与登录功能

    比作MVC的话,控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现,接下来我们就来详细看看如何用Servlet+JavaBean+JSP打造Java Web注册与登录功能
    2016-05-05

最新评论