获取数据库的连接JDBC

jdbc是sun公司为了简化,统一Java操作不同的数据库而定义的一套标准java类库,jdbc独立于任何数据库管理系统,使用统一的方式开来访问数据库,屏蔽了很多细节,使用方便。

JAVA程序只需要使用java.sql包下的api来访问数据库,而不需要关心不同数据库的差异,这里jdbc其实是定义了一组接口,这组接口包含两个层次,一是面向应用到API,二是面向数据库的API,面向应用的API由java程序中使用,而面向数据库的API又具体数据库厂商实现(即JDBC驱动)。这里使用的时候主要是体会到了面向接口编程,我们面向JDBC这一组接口编程,而这些具体的实现是在各个数据库厂商的驱动中。

访问数据的相关内容

Driver接口java.sql.Driver接口是所有JDBC驱动的都需要实现的,这个接口由各个厂商具体实现,我不关心。在程序中可是使用实现了Driver接口的类,但是一种更为好的方式是使用驱动管理类(java.sql.DriverManager),让驱动管理区调用这些具实现类。

加载与注册JDBC驱动

加载 JDBC 驱动需调用 Class 类的静态方法 forName() ,向其传递要加载的 JDBC 驱动的类名DriverManager 类是驱动程序管理器类,负责管理驱动程序
通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例

建立连接

直接调用DriverManager的getConnection方法的到应用程序和数据的连接这里会用到具体的三个字符串:JDBC url:JDBC url的标准由三部分组成,各部分间用冒号分隔。

  • jdbc:<子协议>:<子名称>
    协议:JDBC URL中的协议总是jdbc
    子协议:子协议用于标识一个数据库驱动程序
    子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息
    例如:jdbc:MySQL://localhost:3306/testjdbc
  • username:连接数据库的用户名。
  • password:连接数据库的密码。

连接数据库

1.通过具体的Driver对象的实现类来连接数据库
     @Test
     public void testDriver() throws Exception {

          // 1.创建一个Driver实现类的对象
          Driver driver = new com.mysql.jdbc.Driver();
          String url = "jdbc:mysql://localhost:3306/testjdbc";
          Properties properties = new Properties();
          properties.put("user", "tuxianchao");
          properties.put("password", "123456");
          // 2.调用driver接口的connect方法
          Connection connection = driver.connect(url, properties);
          System.out.println(connection);
     }
 
2.通过驱动的管理类DriverManager来连接数据库,并且将数据库的配置分离到jdbc.properties文件中去
/**
      * 通过DriverManager获取数据库连接
      *
      * DriverManager是驱动的管理类
      *
      * 1.可以通过重载的getconnection方法获取数据库连接,使用时调用具体驱动的获取数据库,使用方便
      *
      * 2.可以同时管理多个驱动程序,连接多个数据库
      *
      * @throws Exception
      */
     @Test
     public void testDriverManager() throws Exception {
          String driverClass = null;// driver实现驱动的全类名
          String url = null;// 数据库服务器地址
          String user = null;// 数据库用户名
          String password = null;// 数据库密码

          // 获取类路径下的jdbc.properties配置文件
          InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
          Properties pro = new Properties();
          pro.load(in);
          driverClass = pro.getProperty("driver");
          url = pro.getProperty("url");
          user = pro.getProperty("user");
          password = pro.getProperty("password");

          // 加载驱动(注册驱动) 可以加载多个驱动,同时连接不同的数据库
          /**
           * DriverManager.registerDriver((Driver)
           * Class.forName(driverClass).newInstance());
           *
           * 无须使用这种方法,因为Calss.forName(driverClass)时候,具体的实现类有一个静态代码块来做相关的工作
           */

          Class.forName(driverClass);

          // 连接数据库
          Connection connection = DriverManager.getConnection(url, user, password);
          System.out.println(connection);
     }
```







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值