0811JDBC随笔

1.JDBC体系系统 一组规范:接口

  • JDBC接口(API)包括两个层次:
  • 面向应用的API:Java API,抽象接口,供应用开发人员使用(连接数据库,执行SQL语句,获得结果)
  • 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序

JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。
不同的数据库供应商需要为这组接口提供不同的实现集,即不同数据库的驱动程序。

[En]

Different database vendors need to provide different implementation sets for this set of interfaces, that is, drivers for different databases.

package com.aiguigu.connection;

import org.junit.Test;

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

public class ConnectionTest {
    @Test
    public void testConnection1() throws SQLException {
        Driver driver = new com.mysql.cj.jdbc.Driver();

        //jdbc:mysql协议
        //local:IP地址
        //3306:默认mysql端口号
        //test:test数据库
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
        //将用户名和密码封装在properties中
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","1234");

        Connection conn = driver.connect(url, info);

        System.out.println(conn);
    }

    //方式二:对方式一的迭代 在如下的方式中不出现第三方API,使程序具有更好的可移植性
    @Test
    public void testConnection2() throws Exception {
        //获取Driver实现类对象,使用反射
        Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();

        //2.提供要连接的数据库
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";

        //提供要连接的用户名和密码
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","1234");

        //获取连接
        Connection conn = driver.connect(url, info);
        System.out.println(conn);
    }

    @Test
    //方式三:使用DriverManager替换Driver
    public void testConnection3() throws Exception {
        //1.获取Drive实现类的对象
        Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        //2提供另外三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
        String user = "root";
        String password = "1234";

        //注册驱动
        DriverManager.registerDriver(driver);

        //获取连接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }
    @Test
    //方式三:使用DriverManager替换Driver
    public void testConnection4() throws Exception {
        //1.提供另外三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
        String user = "root";
        String password = "1234";
        //2.获取Drive实现类的对象
        Class.forName("com.mysql.cj.jdbc.Driver");
        //相较于方式三可以省略如下操作:
//        Driver driver = (Driver) clazz.newInstance();
//        //注册驱动
//        DriverManager.registerDriver(driver);

        //3.获取连接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }
    //方式五:将数据库连接的四个基本信息声明在配置文件中通过读取配置文件,获取连接
    @Test
    public void getConnection5() throws Exception {
        //1.读取配置文件中4个基本信息
        InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");

        Properties pros = new Properties();
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");

        //加载驱动
        Class.forName(driverClass);

        //获取连接
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println(conn);

    }

}

Original: https://www.cnblogs.com/heyiyuanqi/p/16578096.html
Author: 何以媛起
Title: 0811JDBC随笔

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505052/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • BFS与DFS套路总结

    概述 深度优先遍历和广度优先搜索和广度优先搜索是解决图问题最常见的方式,并且在leetcode中有许多相关的变体,但万变不离其宗,其本质结构或者算法框架时固定的,因此本文BFS和D…

    数据库 2023年6月11日
    0110
  • 史上最全面的mysql数据库下载安装教程(适合初学者)

    Original: https://www.cnblogs.com/chaichaichai/p/15330533.htmlAuthor: 牛仔码农Title: 史上最全面的mys…

    数据库 2023年5月24日
    0100
  • 运行jar包使用外部依赖

    nohup java -Dloader.path=”lib/” -Dfile.encoding=utf-8 -jar test.jar > test….

    数据库 2023年6月9日
    061
  • 深入浅出的分析 Properties

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 在集合系列的第一章,咱们了解到,Map 的实现类有 HashMap、LinkedHashMap、TreeMap、Ide…

    数据库 2023年6月14日
    079
  • 3_MyBatis

    一. 引言 1.1 什么是框架? 软件的半成品, 解决了软件开发过程中的普适性问题, 从而简化了开发步骤, 提升了开发效率 1.2 什么是ORM框架? ORM(Object Rel…

    数据库 2023年6月11日
    079
  • Vue3新特性API

    一、vue3介绍 vue3.0是在2.0的基础上重大优化调整后的升级版本,其响应式原理已经在vue2框架基础中介绍过,此文章重点介绍Vue 3 中一些新功能API及其使用,文章内容…

    数据库 2023年6月14日
    093
  • 详解apollo的设计与使用

    apollo 是一款由携程团队开发的配置中心,可以实现配置的集中管理、分环境管理、即时生效等等。在这篇博客中,我们可以了解到: 这里我回答的是为什么使用配置中心,而不是为什么使用 …

    数据库 2023年6月6日
    0102
  • NO.5 MySQL-笔记

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    088
  • 1. SQL

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    092
  • Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

    在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署。 有关如何在 Jexus …

    数据库 2023年6月11日
    0112
  • 【MySQL】MySQL的安装、卸载、配置、登陆和退出

    1 MySQL安装 安装环境:Win10 64位软件版本:MySQL 5.7.24 解压版 1.1 下载 https://downloads.mysql.com/archives/…

    数据库 2023年5月24日
    093
  • Java并发编程之CAS

    在Java并发编程的世界里,synchronized 和 Lock 是控制多线程并发环境下对共享资源同步访问的两大手段。其中 Lock 是 JDK 层面的锁机制,是轻量级锁,底层使…

    数据库 2023年6月11日
    074
  • 【数据库】– 15个小技巧,拿捏SQL优化 【转载】

    前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。 如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优…

    数据库 2023年6月6日
    0113
  • MySQL InnoDB缓存

    1. 背景 对于各种用户数据、索引数据等各种数据都是需要持久化存储到磁盘,然后以”页”为单位进行读写。 相对于直接读写缓存,磁盘IO的成本相当高昂。 对于读…

    数据库 2023年6月14日
    0152
  • Linux下搭建git分布式管理

    VMware 虚拟机中搭建步骤 一、 1.查一下ip 2.和Xshell连接起来 3.看是否连接上 4.这就ok了 5.输入 yum install git yum install…

    数据库 2023年6月6日
    092
  • ZooKeeper集群部署

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球