数据库基础(六)——JDBC

数据库基础(六)——JDBC

前言

JDBC是一种数据库驱动,主要功能是在其他的平台或者软件中连接并使用数据库的一种组件。比如我们使用Java语言连接使用数据库的时候就需要JDBC驱动。

概述

JDBC驱动是sun公司为了简化操作提出的一个Java操作数据库的规范。大家都知道现今市场上数据库有很多,我们通过Java语言不能直接连接数据库,所以我们需要各个类型数据库的对应驱动。

如果我们的项目需要连接多个数据库则需要加载多种数据库驱动,这明显不符合开发规范,所以sun公司就推出了这种Java连接数据库的规范,各个数据库的公司按照指定的规范实现驱动的底层。

其实JDBC就是介于Java与数据库之间的一层,类似于我之前写过的网络协议杂谈(一)中描述的网络分层的理念一样,复杂的功能和业务我们可以把其拆成很多层来进行解决。

JDBC应用

Java语言连接使用数据库对的时候需要是哪个基础工具包。其中Java.sql 和javax.sql 是Java中默认存在的,除此之外我们还需要导入一个MySQL数据库连接驱动工具包。

接下来直接上代码:

//        加载驱动
        Class.forName("com.mysql.jdbc.Driver");

//        导入数据库连接参数
//        基础的数据库连接信息截止到数据库名,后面在加入的参数中属于代码健壮性的属性
        /**
         * @param useUnicode 表示支持中文的编码
         * @param characterEnccoding 表示字符编码集,建议使用utf-8
         * @param useSSLeep 表示对该数据库使用安全连接,SSL是一种安全连接协议,可以去看我的网络协议杂谈(一)中的描述         *
         */
        //  The server time zone value 异常出现的时候,我们一般要重新设置一下数据库连接参数的时区设置
        //  要注意的是我们一般在参数中加入 serverTimeZone=Asia/Shanghai或者将值设置为Asia/ChongQing
        //  设置时区的时候一定不要设置Asia/BeiJing,因为在我们的时区中没有北京的时区
        String url = "jdbc:mysql://localhost:3306/class1?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai";
        String username = "root";
        String password = "123123";

//        连接数据库,成功后获取数据库连接对象
        Connection connection = DriverManager.getConnection(url,username,password);

//        在数据库连接对象的基础上创建SQL执行对象,在数据库中执行SQL语句
        Statement statement = connection.createStatement();

//        在数据库中执行SQL,并尝试接收SQL语句执行目录
        String sql = "select * from student";
        // ResultSet 结果集的底层实现,
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            System.out.println("sid" + resultSet.getObject("sid"));
            System.out.println("sname" + resultSet.getObject("sname"));
            System.out.println("sage" + resultSet.getObject("sage"));
            System.out.println("tid" + resultSet.getObject("tid"));
        }

//        释放连接
        if (resultSet != null){
            resultSet.close();
        }
        if (statement != null){
            statement.close();
        }
        if (connection != null){
            connection.close();
        }

上述代码中展示了查询的提交方式。在我上文说过,我们的CRUD操作被宏观说明为查询和修改(更新),因为在最基础的JDBC中做数据库连接的时候仅有更新和查询两种提交方式。

如果想执行修改操作,可以直接使用execute()方法,如果确定只执行修改的SQL语句,我们可以使用executeUpdate()方法。

// 修改方法,这个方法的返回值是受影响的行数
int result = statement.executeUpdate(sql); 

我们也可以使用JDBC方式依次执行多条SQL语句,使用以下方法:

String sql_row1 = "select * from student";
String sql_row2 = "insert into student values(···)";
statement.addBatch(sql_row1);
statement.addBatch(sql_row2);
int[] result = statement.executeBatch();

这个时候,我们通过addBatch方法将SQL语句放入到容器内,然后将所有的SQL语句都依次执行。

ResultSet结果集中包含了所有的查询结果,我们可以通过更为准确的方法来获取对应的字段值:

ResultSet result = statement.executeQuery("假定该SQL语句查询出一条数据");
// 可以获取所有类型的值(不确定字段类型的情况下使用, 如果明确类型,则尽量使用指定类型)
result.getObject();
// 字符串
result.getString();
// 整型
result.getInt();
// 浮点型
result.getFloat();
// 日期类型
result.getDate();

JDBC中的事务

直接上代码

// 开启事务
connection.setAutoCommit();
// 事务回滚
connection.rollback();
// 事务提交
connection.commit();

总结

数据库的基础部分就讲到这里,具体事务的应用等知识点不会说明,如果我准备记录数据库进阶方面的笔记会对事务进行详细说明。数据库方面我们以后使用框架来操作,所以现阶段对于单纯的JDBC仅仅是一些基础逻辑方面需要了解,基础逻辑会在框架部分进行说明。

数据库进阶阶段中的知识点包含很多复杂的逻辑,比如:SQL优化、数据库优化等方面的理论,现阶段只要单纯的会使用SQL语句进行CRUD就可以,其余知识仅做了解,后续会对进阶部分进行详细说明。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值