使用JDBC连接MySQL数据库

目录

1、JDBC概述

        1.1 JDBC介绍

        1.2 JDBC体系结构

        1.3 JDBC程序编写步骤

2、连接要素

        2.1 Driver 接口实现类

        2.2 URL

        2.3 用户名和密码

3、连接数据库方式

        3.1 连接方式一

        3.2 连接方式二

        3.3 连接方式三

        3.4 连接方式四

        3.5 连接方式五(推荐使用)


1、JDBC概述

        1.1 JDBC介绍

                JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。

                JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

                JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

如果没有JDBC,那么Java程序访问数据库时是这样的:

 有了JDBC,Java程序访问数据库时是这样的:

        1.2 JDBC体系结构

                JDBC接口(API)包括两个层次:

                        面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)

                        面向数据的API:Java Driver API,供开发商开发数据库驱动程序用

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

        1.3 JDBC程序编写步骤

        补充:ODBC(Open Database Connectivity,开放式数据库连接),是微软在Windows平台下推出的。使用者在程序中只需要调用ODBC API,由 ODBC 驱动程序将调用转换成为对特定的数据库的调用请求。

2、连接要素

        2.1 Driver 接口实现类

                2.1.1 Driver 接口介绍

                java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。

                在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。
                MySQL的驱动: com.mysql.jdbc.Driver
                附上下载地址:密码:1234

idea导入MySQL驱动步骤:

                2.1.2 加载与注册JDBC驱动

                        加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名

                        Class.forName(“com.mysql.jdbc.Driver”);

                        注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序

                        使用DriverManager.registerDriver(com.mysql.jdbc.Driver)来注册驱动

                        通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实 例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例。

        2.2 URL

                JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的 驱动程序,从而建立到数据库的连接。

                JDBC URL的标准由三部分组成,各部分间用冒号分隔。 
                        jdbc:子协议:子名称
                        协议:JDBC URL中的协议总是jdbc 
                        子协议:子协议用于标识一个数据库驱动程序
                        子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号数据库名

        比如:

                MySQL的连接URL编写方式:

                        jdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数=值&参数=值
                        jdbc:mysql://localhost:3306/test
                        jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8(如果JDBC程序与服务器端的字符集不一致,会导致乱码,那么可以通过参数指定服务器端的字符集)
                        jdbc:mysql://localhost:3306/test?user=root&password=123456

        2.3 用户名和密码

                user,password可以用“属性名=属性值”方式告诉数据库
                可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接

3、连接数据库方式

        3.1 连接方式一

    @Test
    public void testConnection1() {
        try {
            //1.提供java.sql.Driver接口实现类的对象
            Driver driver = null;
            driver = new com.mysql.jdbc.Driver();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "123456");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

说明:上述代码中显式出现了第三方数据库的API

        3.2 连接方式二

@Test
    public void testConnection2() {
        try {
            //1.实例化Driver
            String className = "com.mysql.jdbc.Driver";
            Class clazz = Class.forName(className);
            Driver driver = (Driver) clazz.newInstance();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "123456");

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

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

说明:相较于方式一,这里使用反射实例化Driver,不在代码中体现第三方数据库的API。体现了面向接口编程思想。

        3.3 连接方式三

@Test
    public void testConnection3() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            String driverName = "com.mysql.jdbc.Driver";

            //2.实例化Driver
            Class clazz = Class.forName(driverName);
            Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            DriverManager.registerDriver(driver);
            //4.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

说明:使用DriverManager实现数据库的连接。体会获取连接必要的4个基本要素。

        3.4 连接方式四

@Test
    public void testConnection4() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            String driverName = "com.mysql.jdbc.Driver";

            //2.加载驱动 (①实例化Driver ②注册驱动)
            Class.forName(driverName);


            //Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            //DriverManager.registerDriver(driver);
            /*
            可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有:
            static {
                try {
                    DriverManager.registerDriver(new Driver());
                } catch (SQLException var1) {
                    throw new RuntimeException("Can't register driver!");
                }
            }

             */


            //3.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

说明:不必显式的注册驱动了。因为在DriverManager的源码中已经存在静态代码块,实现了驱动的注册。

        3.5 连接方式五(推荐使用)

                在工程的src目录下新建配置文件:jdbc.properties

user=root
password=123455
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver

                说明:使用配置文件的方式保存配置信息,在代码中加载配置文件

                使用配置文件的好处:

                        ①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码
                        ②如果修改了配置信息,省去重新编译的过程。

@Test
    public  void testConnection5() throws Exception {
    	//1.加载配置文件
        InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties pros = new Properties();
        pros.load(is);
        
        //2.读取配置信息
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");

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

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

    }

输出以下结果表示连接成功

  • 19
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值