一、JDBC_通过Driver接口获取数据库连接

1、 Driver是一个接口:数据库厂商必须提供实现的接口,可以从其中 获取数据库连接。

2、JDBC URL由三部分组成,各部分用冒号隔开,格式:jdbc:<子协议>:<子名称>

  协议:JDBC URL中的协议总是jdbc  jdbc

  子协议:子协议用于标识一个数据库驱动程序   mysql

  子 名称:一种标识数据库的方法,子名称可以依不同的子协议而变化,用自名称的目的是为了定位数据库,提供足够的信息。   localhost:3306/test

3、Properties类

     JAVA的包中,有提供专门的操作属性文件的类,java.uitl.Properties类,该类是一个集合类,所以,Properties会将属性以集合的方式读写;

  该类的详细介绍参考:   http://blog.csdn.net/qinpeng100423/article/details/9125857

4、代码实现

@Test
 public void test() throws SQLException {
    Driver driver=new Driver();
    String url="jdbc:mysql://192.168.56.1:3306/test";
    Properties info=new Properties();
    info.put("user", "root");
    info.put("password", "kk");
    Connection connection=driver.connect(url, info);
    System.out.println(connection);
 }

5、编写一个通用的方法,在不修改原程序的情况下,可以获取任何数据库的连接?

  ---将数据库驱动Driver实现类的全类名、url、user、password放入一个配置文件中,通过修改配置文件的方式实现和具体的数据库解耦。

实现如下:

1>准备连接数据库的4个字符串

2>获取jdbc.properties对应的输入流

3>创建Properties对象

4>加载对应的输入流

5>具体决定以上4个字符串

6>加载数据库驱动程序

7>获取数据库连接

public Connection getConnection() throws Exception{
  
    String driverClass=null;
    String jdbcUrl=null;
    String user=null;
    String password=null;
  
    //读取类路径下的jdbc.properties文件
    InputStream in=getClass().getClassLoader().getResourceAsStream("jdbc.properties");
    Properties properties=new Properties();

   //加载输入流
    properties.load(in);
  
    driverClass=properties.getProperty("driver");
    jdbcUrl=properties.getProperty("jdbcUrl");
    user=properties.getProperty("user");
    password=properties.getProperty("password");
    //通过反射创建Driver对象
    Driver driver=(Driver)Class.forName(driverClass).newInstance();
  
    Properties info=new Properties();
    info.put("user", user);
    info.put("password", password);
    Connection connection=driver.connect(jdbcUrl,info);
    return connection;
 }

jdbc.properties配置文件:

  driver=com.mysql.jdbc.Driver
  jdbcUrl=jdbc:mysql://192.168.56.1:3306/test
  user=root
  password=kk

二、通过DriverManager的getConnection()方法获取数据库连接

1、DriverManager是驱动的管理类:

    1>可以通过重载的getConnection()方法获取数据库连接,较为方便

    2>可以同时管理多个驱动程序:若注册了多个数据库连接,则调用getConnection()方法时传入的参数不同,即返回不同的数据库连接。

2、代码实现

1>准备连接数据库的4个字符串

2>获取jdbc.properties对应的输入流

3>创建Properties对象

4>加载对应的输入流

5>具体决定以上4个字符串

6>加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)

7>获取数据库连接

@Test
 public void testDriverManager() throws Exception{
    //1、准备数据库连接的4个字符串
    String driverClass=null;   //驱动的全类名
    String jdbcUrl=null;      //JDBC URL
    String user=null;
    String password=null;
  
    //读取类路径下的jdbc.properties文件
    InputStream in=getClass().getClassLoader().getResourceAsStream("jdbc.properties");
    Properties properties=new Properties();
    properties.load(in);
    driverClass=properties.getProperty("driver");
    jdbcUrl=properties.getProperty("jdbcUrl");
    user=properties.getProperty("user");
    password=properties.getProperty("password");
    //加载数据库驱动程序
    Class.forName(driverClass);
    //通过DriverManager的getConnection()方法获取数据库连接
    Connection connection=DriverManager.getConnection(jdbcUrl,user,password);
    System.out.println(connection);
 }
 @Test
 public void testDriverManager1() throws Exception{
    //1、准备数据库连接的4个字符串
    String driverClass="com.mysql.jdbc.Driver";   //驱动的全类名
    String jdbcUrl="jdbc:mysql:///test";      //JDBC URL
    String user="root";
    String password="kk";
  
    //加载数据库驱动程序
    Class.forName(driverClass);
    //通过DriverManager的getConnection()方法获取数据库连接
    Connection connection=DriverManager.getConnection(jdbcUrl,user,password);
    System.out.println("向日葵:"+connection);
 }

  

三、数据库连接释放工具类

JDBCTools.java

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCTools {

  public static Connection getConnection() throws Exception {

     String driverClass = null;
      String jdbcUrl = null;
      String user = null;
      String password = null;

    // 读取类路径下的jdbc.properties文件
      InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");
      Properties properties = new Properties();
      properties.load(in);

     driverClass = properties.getProperty("driver");
      jdbcUrl = properties.getProperty("jdbcUrl");
      user = properties.getProperty("user");
      password = properties.getProperty("password");
      // 加载数据库驱动程序
      Class.forName(driverClass);
      // 通过DriverManager的getConnection()方法获取数据库连接
      Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
      return connection;

   }
 
   public static void release(Statement st,Connection conn){
  
      if (st!=null) {
         try {
            st.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }
      }
  
      if (conn!=null) {
         try {
            conn.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }
      }
    }
}

  

<一>获取数据库连接的更多相关文章

  1. JAVA jdbc获取数据库连接

    JDBC获取数据库连接的帮助类 import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManage ...

  2. 使用DriverManager获取数据库连接的一个小改进

    由于使用DriverManager获取数据库连接时,由于DriverManager实现类中有一段静态代码块,可以直接注册驱动,且可以同时管理多个驱动程序 所以当换数据库连接时需要指定不同的数据库,那么 ...

  3. 使用DriverManager获取数据库连接

    DriverManager 是驱动的管理类 * 1).可以通过重载的getConnection() 方法获取数据库连接,较为方便 * 2).可以同时管理多个驱动程序,若注册了多个数据库连接,则调用ge ...

  4. 通过Driver获取数据库连接

    先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包 Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据 ...

  5. JDBC_获取数据库连接

    <span style="font-size:24px;">package src.com.jdbc.java; import java.io.IOException; ...

  6. 获取数据库连接对象Connection

    2018-11-04  19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...

  7. JDBC编程:获取数据库连接

    JDBC(Java Database Connectivity),即Java数据库连接.通过JDBC编程,可以使Java应用程序和数据库进行交互. JDBC驱动的方式有很多种,我们常用的驱动方式为:本 ...

  8. JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接

    1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...

  9. 获取数据库连接的方式 & Statement操作数据库的弊端

    1.获取数据库连接的方式 TestConnection package com.aff.connection; import java.io.InputStream; import java.sql. ...

随机推荐

  1. 什么是Reactor模式,或者叫反应器模式

    Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些.通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或 ...

  2. JAVA设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  3. vue 列表渲染

    在Vue官网中写道,vue无法直接用索引设置元素, 如 vm.items[0] = {}: 提出的解决方法是用 : example1.items.$set(0, { childMsg: 'Change ...

  4. 【Android学习】解决Eclipse AVD打开慢的问题

    1.创建的时候勾选“Snapshot” 2.之后Start时候勾选对应的.

  5. ASP.NET Core--基于授权的视图

    翻译如下: 开发人员通常希望基于当前用户身份显示,隐藏或以其他方式修改UI. 您可以通过依赖注入访问MVC视图中的授权服务. 将授权服务注入Razor视图,请使用@inject指令,例如: @inje ...

  6. mrjob 使用 mongoldb 数据源【转】

    最近做的事情是用mrjob写mapreduce程序,从mongo读取数据.我的做法很容易也很好懂,因为mrjob可以支持sys.stdin的读取,所以我考虑用一个python程序读mongo中的数据, ...

  7. HTML5安全:CORS(跨域资源共享)简介。。。ie67不要想了。。。

    来源:http://blog.csdn.net/hfahe/article/details/7730944 前言:像CORS对于现代前端这么重要的技术在国内基本上居然很少有人使用和提及,在百度或者Go ...

  8. 【Network】golang 容器项目 flannel/UDP相关资料

    参考资料: flannel_百度搜索 Flannel首页.文档和下载 - 容器集群子网 - 开源中国社区 docker下基于flannel的overlay网络分析 - OPEN 开发经验库 flann ...

  9. 《sqoop安装和配置》

    参考帖子http://blog.csdn.net/jiedushi/article/details/6663177 http://blog.csdn.net/ww1982_0_0_0/article/ ...

  10. ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)

    基于残留网络与FF算法的改进-EK算法,核心是将一条边的单向残留容量的减少看做反向残留流量的增加. //网络流 //EK算法 //Time:16Ms Memory:348K #include<i ...