jdbc访问数据库详解

本文详细介绍了JDBC(Java Database Connectivity)的使用,包括jdbc的简介、主要类的层次关系和功能,如Driver、DriverManager、Connection、Statement、ResultSet。通过示例展示了数据库连接、SQL执行和结果解析的过程,总结了JDBC访问数据库的基本流程。
摘要由CSDN通过智能技术生成

一.jdbc简介
jdbc,java database Connectivity即java数据库连接,是一组定义了如何连接和操作数据库的java api。下面结合一个简单示例说明下具体步骤:

public class Main {
    private static Logger LOG = LoggerFactory.getLogger(Main.class);

    public static String DRIVER    = "com.mysql.jdbc.Driver";
    public static String USER_NAME = "root";
    public static String PASSWORD  = "root";
    public static String TABLE     = "account";
    public static String URL       = "jdbc:mysql://127.0.0.1/bank";

    public static void main(String[] args) {

        //导入驱动
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            LOG.error("驱动加载失败", e);
        }
        //获取连接
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
        } catch (SQLException e) {
            LOG.error("建立连接失败", e);
        }
        try {
            //获取可用于执行sql的statement,statement中也包含了连接到数据库的一些信息
            Statement statement = connection.createStatement();
            String sql = "select account_id,avail_balance from " + TABLE + " limit 2";
            //通过stament执行sql,并获取执行结果,返回的结果resultSet可以看成一个二维表格形式,
            //next方法表明是否还有下一行,可以通过坐标或列名获取下一列;只能遍历下一行,不能返回或跳到指定行
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                long id = resultSet.getLong(1);
                long balance = resultSet.getLong(2);
                System.out.println(id + " " + balance);
            }
        } catch (Exception e) {
            LOG.error("sql执行异常");
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    LOG.error("异常");
                }
            }
        }
    }
}

可以看到一共分为5步:加载驱动–>获取连接–>获取Statement对象–>执行sql–>解析结果。上面给的sql是执行的查询操作流程,但对于删除的新增等操作也是类似的。
上面涉及到的比较重要的几个类是:Driver、DriverManager、Connection、Statement、ResultSet,下面就依次介绍下这几个类以及它们之间的联系。
二.jdbc中主要的类及其层次关系
下面这张图比较清楚的说明Driver、DriverManger、Connection、Statement、ResultSet之间的层次关系以及它们大致的功能。
这里写图片描述
下面具体来介绍每个类的作用以及一些值得注意的地方。
1)Driver
使用JDBC操作数据库的第一步就是将数据库对应的驱动(Driver)载入内存。从上面的代码可以看到,所谓的导入驱动本质上只是通过Class.forName()方法将一个具体的类
加载到了内存之中,比如上面的就是:com.mysql.jdbc.Driver这个类,而其实所谓的驱动就是实现了Java.sql.Driver接口的类。下面看下Driver接口中的几个主要方法:
这里写图片描述
主要使用的是两个方法:acceptsURL()、connect()。
acceptsURL()负责检查传入的url,判断驱动能否打开该url,需要指出的是这里的检查并不会对url进行实际的连接操作而只是会对格式进行检查;
每个数据库连接的url都有自己定义的格式,如果检查符合格式则返回true,否则返回false。
例如mysql的url格式为: jdbc:mysql://host:port/database_name
connect()方法负责根据传入的url和用户名、密码等信息建立与数据库的连接,返回可以对数据库进行操作的Connection对象。
因为每种数据库建立连接的方式是不一样的,所以操作不同的数据库需要使用不同的Driver类的connect()方法,这就是不同数据库需要导入不同驱动的原因。
下面手动操作mysql的Driver类进行数据库的连接和协议测试:

public static void testDriver() throws Exception {
    //导入mysql的驱动,并且获得Driver实例
    Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值