jdbc规范示例与DButil的编写

这里主要是回顾一下jdbc的写法,我们后面基本都用orm框架和spring全面接管了,不会使用jdbc开发,但是jdbc是基础也是重点,于是写这篇来回顾一下。

package com.mashibing;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//如果需要建议连接,java中提供了一套标准,数据库厂商来进行实现,包含实现子类,实子类的jar文件再哪?
//一般情况下存放在安装目录下
public class JDBCTest {
    public static void main(String[] args) throws Exception {

        //1、加载驱动:
        /*
        * 当执行了当前代码之后,会返回一个Class对象,在此对象的创建过程中,会调用具体类的静态代码块
        * */  
       Class.forName("oracle.jdbc.driver.OracleDriver");  
       //2、建立连接
        //第一步中已经将driver对象注册到了drivermanager中,所以此时可以直接通过DriverManager来获取数据库的连接
        /*
        * 需要输入连接数据库的参数
        * url:数据库的地址
        * username:用户名
        * password:密码
        *
        * */
        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
        //3、测试连接是否成功
        System.out.println(connection);
        //4、定义sql语句
        //只要填写正常执行的sql语句即可
        String sql = "select * from emp";
        //5、准备静态处理块对象,将sql语句放置到静态处理块中,理解为sql语句放置对象
        /*
        * 在执行sql语句的过程中,需要一个对象来存放sql语句,将对象进行执行的时候调用的是数据库的服务,数据库会从当前对象中
        * 拿到对应的sql语句进行执行
        *
        **/
        Statement statement = connection.createStatement();
        //6、执行sql语句,返回值对象是结果集合
        /*
        * 将结果放到resultset中,是返回结果的一个集合
        * 需要经过循环迭代才能获取到其中的每一条记录
        *
        * statement在执行的时候可以选择三种方式:
        * 1、execute:任何SQL语句都可以执行
        * 2、executeQueryL只能执行查询语句
        * 3、executeUpdate,只能执行语句
        * */
        ResultSet resultSet = statement.executeQuery(sql);
        //7、循环处理
        //使用while循环,有两种获取具体值的方式,第一种通过下表索引编号来获取,从1开始,
        //第二种是通过列名来获取,哪种好?推荐使用列名,列明一般不会发生修改
        while(resultSet.next()){
            int anInt = resultSet.getInt(1);
            System.out.println(anInt);
            String ename = resultSet.getString("ename");
            System.out.println(ename);
            System.out.println("-----------------");
        }
        //8、关闭连接
        statement.close();
        connection.close();
    }
}

package com.mashibing.util;

import java.sql.*;
/**
    因为连接数据库有很多重复的代码操作,我们可以对其进行封装

 */
public class DBUtil { 

    public static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
    public static final String USERNAME = "scott";
    public static final String PASSWORD = "tiger";

    static {
        try {//加载驱动
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接
     * @return 返回连接对象
     */
    public static Connection getConnection(){
        try {
            return DriverManager.getConnection(URL,USERNAME,PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;//抛异常的情况下
    }

    /*
    * 关闭数据库连接
    * */
    public static void closeConnection(Connection connection){
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    } 
    public static void closeConnection(Connection connection, Statement statement){
        if (statement!=null){
            try { 
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void closeConnection(Connection connection, Statement statement, ResultSet resultSet){
        if (resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值