JDBC-连接数据库详解

JDBC作为java操作数据库最重要的部分,是每个java学习者都应该掌握的。可能有同学会说了,操作数据库我直接学习MyBatis,用MyBatis岂不是一步到位?毕竟框架也是每个人都必须要学的。但其实不管是学一项技术还是工作,只有掌握底层原理才能走得更远,而MyBatis其实就是对JDBC进行了封装,所以我认为有必要学会JDBC,而且以后学习MyBatis时也会更轻松一点。

本篇文章主要来介绍在java编程软件中,通过编写程序来利用jdbc连接MYSQL数据库。

首先需要一些准备工作:

1.需要有一张表,若没有可以在数据库中简单的创建一张表,我这里使用的是自己创建的test表;

2.下载好jdbc驱动:驱动是java程序与数据库系统之间建立通信的一条渠道,这里使用的是mysql的驱动,可以去官网自行下载。然后导入到idea 中。

ps:若没有表和驱动的也可以找我分享

然后来介绍一个最重要的接口:

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

接下来说一下连接的大概方式或者说是步骤:

1、首先要把我们需要的数据库的驱动(这里用得是MySQL 的驱动)导入到软件中(idea或者eclipse)。

2、然后开始编写一个类或者是方法去获取连接。

3、首先需要在类中去获取Mysql的驱动,只导入到软件中是不够的,你需要去找到他然后让他作为一个实例去使用。

4、当拿到可以与数据库通信的驱动以后,你就要去找你需要的那个数据库了,也就是你要用的数据库的位置和名字,还有进入数据库的用户名和密码,只有这样Java才可以通过位置去找到数据库并进入数据库。

5、当数据库也找到以后,就可以获取一个和数据库的连接了,具体实现方式看下面代码演示。

接下来就可以给出连接数据库的几种方式了,其实只需要掌握最后一种方式即可,但为了更好的理解,这里采用循序渐进的方式,一点点从最原始的方式改进到最终版本。

方式一:

    @Test
    public void testConnection1() throws SQLException {
        /**
         * 第一步:需要获取MySQL的驱动。 即获取 Driver的实现类对象
         * 多态写法:前面就是Driver驱动接口,后面的Driver其实是MySQL自己的驱动,这里需要导包:import com.mysql.jdbc.Driver;导包以后就可以直接简写为Driver了。
         * 完整写法应该是:Driver driver = new com.mysql.jdbc.Driver();
         */
        Driver driver = new Driver();

        /**
         * 第二步:获取需要连接的数据库和用户密码
         * jdbc:mysql:代表协议,这里是mysql的jdbc协议
         * localhost:ip地址 这里指本地
         * 3306:默认MySQL的端口号
         * test:本项目使用的数据库test,数据库不同则需要修改为自己的数据库
         */
        String url = "jdbc:mysql://localhost:3306/test";
        //将用户名和密码封装在Properties中
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","123456");

        //第三步:获取一个连接。这时候就可以拿着地址和身份密码去链接数据库了
        //Driver中有一个方法connect可以获取到一个connection对象,即获取一个连接
        Connection conn = driver.connect(url, info);
       //打印输出测试一下连接情况
        System.out.println(conn);

    }

方式二:对方式一的迭代,在如下的程序中不出现第三方的api,使得程序具有更好的可移植性

    @Test
    public void testConnection2() throws Exception{
        //1.使用反射获取Driver实现类对象
        Class<?> clazz = Class.forName("com.mysql.jdbc.Driver");
        //这里将原始的object类型强制转换为Driver类型
        Driver driver = (Driver) clazz.newInstance();

        //2.提供需要连接的数据库
        String url = "jdbc:mysql://localhost:3306/test";

        //3.提供连接需要的用户名和密码,将用户名和密码封装在Properties中
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","123456");

        //4.获取连接
        Connection conn = driver.connect(url, info);

        System.out.println(conn);
    }

方式三:使用DriverManager实现数据库的连接。

    @Test
    public void testConnection3() throws Exception {
        //1.使用反射获取Driver实现类对象
        Class<?> clazz = Class.forName("com.mysql.jdbc.Driver");
        //这里将原始的object类型强制转换为Driver类型
        Driver driver = (Driver) clazz.newInstance();

        //2.提供另外三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";

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

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

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

    @Test
    public void testConnection4() throws Exception {
        //1.提供三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";


        //2.加载MySQL的Driver
        Class.forName("com.mysql.jdbc.Driver");
        /*
        第四种方式相较于方式三,这里把创建对象和注册驱动的步骤省略了,之所以可以这么做,是因为mysql的驱动中有一个静态代码块,只要上面第二步一加载,
        静态代码块就会自动执行一次,这个代码块的功能其实就是注册驱动。可以去原类中查看。
         */

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

方式五:最终版,将数据库连接需要的四个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接

创建一个配置文件:

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

代码:

@Test
    public void testConnection5() throws Exception {

        //1.使用类加载器读取配置文件中的信息
        //这里使用本类的class对象获取的系统类加载器,然后再获取路径
        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");

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

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

    }

最终借用配置文件的原因:

①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码

②如果修改了 配置信息,省去重新编译的过程。

到这里,数据库的连接就介绍完了,最终只需要掌握方式五即可,但要明白整个连接的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值