JDBC基础编程六步+应用实例_最易理解!

本文详细介绍了JDBC的基本原理和在Java中实现JDBC的六个步骤,包括注册驱动、获取连接等。通过实例展示了Statement和PreparedStatement的使用,探讨了两者的区别,并提出了JDBC工具类的封装思想,以提高代码复用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC(Java DataBase Connectivity)

本文主要是通过简单的例子理解JDBC运行的基础原理,以及简单的JDBC工具类如何创建与使用。




前言

JDBC的理解

首先思考两个问题。
1、为何SUN定制的一套JDBC接口? (因为每一个数据库的底层实现原理都不一样。)
2、JDBC的本质? (一套接口。)
通过下面的图进行一个简单的梳理与关系介绍。
在这里插入图片描述

由上述可知,JDBC提供一套连接并操作数据库的接口,各大数据库厂家根据此接口编写了各自的相应实现类。


一、大致原理

本节主要通过简单的栗子来了解相应的底层原理。(作为编程人员,有时不需要磕相关的底层代码到底吖)

走一下思路,捋一下~
1、连接数据库的接口
2、实现者将各个数据库根据接口封装具体连接驱动的方法,实现此接口
3、调用者需要先创建我们想要连接的数据库对象
4、调用者根据相关的数据库来带调用此数据库的具体连接方法

自定义JDBC接口:

public interface JDBC {
   
     default void getConnection(){
   };
}

MySQL实现类:

public class MySQL implements JDBC{
   
    @Override
    public void getConnection(){
   
//        具体的实现代码与java程序员无关系,只需要会使用即可
        System.out.println("连接MySQL数据库成功!");
    }
}

Oracle实现类:

public class Oracle implements JDBC{
   
    @Override
    public void getConnection(){
   
        System.out.println("连接Oracle数据库成功!");
    }
}

应用主类:

public class JavaProgrammer {
   
    public static void main(String[] args) throws Exception {
   

//       模拟实现
        
//        创建需要连接的数据库对象
        JDBC jdbc = new MySQL();
//        调用连接方法
        jdbc.getConnection();
//        如上,只是使用不同的数据库对象
        JDBC jdbc1 = new Oracle();
        jdbc1.getConnection();
    }
}

二、Java中JDBC编程六步(Important!!!)

1.JDBC六大步骤

  1. 注册驱动
    作用:告诉Java程序,即将要连接的是哪个品牌的数据库。
  2. 获取连接
    表示JVM进程和数据库进程之间的通道打开了,这属于进程之间的通信。重量级的,使用完后一定要关闭通道。
  3. 获取数据库操作对象
    专门执行sql语句的对象
  4. 执行SQL语句
    主要执行DQL和DML
  5. 处理查询结果集
    只有当第四步执行的是DQL(SELECT语句)时,才会有第五步的处理查询结果集。
  6. 释放资源
    使用完资源一定要关闭资源。Java和数据库之间的通信属于进程间的通信。若开启之后,一定要关闭!

【注】一般资源的释放需要从里到外进行释放。

2. 实际应用

在实际应用之前,先介绍一下需要了解的知识点

2.1 应用前准备

2.1.1 JDBC中url连接地址

格式:

jdbc:mysql://[host][,failoverhost...][:port]/[database] [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

mysql的JDBC连接时的URL参数:

主要参数 参数说明
user 数据库用户名(用于连接数据库)
password 用户密码(用于连接数据库)
useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
characterEncoding 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk
autoReconnect 当数据库连接异常中断时,是否自动重新连接?
autoReconnectForPools 是否使用针对数据库连接池的重连策略
failOverReadOnly 自动重连成功后,连接是否设置为只读?
maxReconnects autoReconnect设置为true时,重试连接的次数
initialTimeout autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒
connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本
socketTimeout socket操作(读写)超时,单位:毫秒。 0表示永不超时

举个小例子:

String url = "jdbc:mysql://localhost:3306/my_employees?useUnicode=true&characterEncoding=utf8&useSSL=true";

上述例子中,my_employees是数据库的名字;serverTimezone:url的时区使用中国标准时间,UTC+8才是准确时间。

2.1.2 URL:统一资源定位符

URL包括:

  • 协议
  • IP
  • PORT
  • 资源名

2.2 Statement作为数据库操作对象的应用实例

下面的栗子主要通过 MySQL驱动进行应用吖(其实什么驱动都可以,只要了解了原理,就很容易定位需要改动哪里啦)
根据上述JDBC连接数据库的6大步骤进行实例操作。(上述主要的六大步骤已经在代码中注释。)

package demo;

import com.mysql.jdbc.Driver;
import com.mysql.jdbc.Statement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @description: 通过简单的栗子,使用JDBC连接数据库并进行交互。
 * @author: Grape_Pip
 */
public class JDBCDemo {
   
//		  主入口
    public static void main(String[
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值