首页 > 数据库 >如何使用JDBC操作数据库?JDBC快速入门

如何使用JDBC操作数据库?JDBC快速入门

时间:2023-02-19 15:31:58浏览次数:46  
标签:JDBC Java 入门 数据库 MySQL sql 操作

(文章目录)

1. 前言

在 Java 开发中,使用 Java 语言操作数据库是非常重要的一部分,那么 Java 语言是如何操作数据库的呢?我们需要使用不同厂商的数据库时,例如 MySQL,Oracle 等,显然一套 Java 代码是不能操作不同的数据库的,那么怎样实现一套 Java 代码对不同的数据库的操作呢?

在这里插入图片描述

JDBC 应运而生,JDBC 是使用Java语言操作关系型数据库的一套API,其中定义了对数据库操作的规范,不同的数据库厂商提供了不同的 JDBC 实现类,称为驱动,使用时,只需要导入需要的数据库驱动 jar 包,便可以操作不同的关系型数据库,其实际是使用了 jar 包中的实现类。

该系列文章的学习目标:

  • 什么是 JDBC,如何使用?
  • 使用 JDBC 完成数据的增删改查操作
  • JDBC API 熟练使用

2. JDBC 概述

2.1 概念

JDBC , Java DataBase Connectivity , 是使用 Java 语言操作关系型数据库的一套API。本质上来说,JDBC 中定义了一套操作关系型数据库的规范,但是我们不能直接使用这套接口来操作数据库,于是各大数据库厂商提供了 JDBC 不同的实现类,称为驱动,例如 MySQL 驱动,此时,我们只需要操作 JDBC 规范好的代码便可以完成对数据库的操作。在实现对数据库的操作时,其底层是使用了 jar 包中定义的实现类。

image-20230122171430643

当我们使用不同的数据库时,例如测试时使用 MySQL 数据库,部署时使用Oracle 数据库,只需要编写一套 Java 代码便可以实现对不同关系型数据库的操作。

2.2 优点

使用 JDBC 操作关系型数据库时,各大数据库厂商提供了不同的实现类,我们不需要针对不同的数据库进行单独开发,因此,我们也可以随时替换数据库,而不用大量修改Java代码。

我们只需要在使用时导入需要使用的数据库对应的驱动 jar包到项目中,便可以实现对指定数据库的操作,使 Java 操作数据库变得轻松便捷。

下图就是MySQL的驱动jar包:

image-20230122170603015

不同版本的 jar 包可以在官网下载。

3. JDBC 快速入门

使用 Java 语言操作数据库,实际上就是 Java 代码将 sql 语句发送到 MySQL 数据库服务端,MySQL 服务端接收并执行 sql 语句,同时返回一个执行结果,最后该结果会发送到 Java 代码进行处理。

在这里插入图片描述

对数据库的操作大致分为以下几个步骤:

  1. 注册驱动
  2. 获取连接
  3. 编写sql
  4. 获取执行sql对象
  5. 执行sql
  6. 处理返回结果
  7. 释放资源

在进行编码之前,需要先创建工程,导入数据库的驱动 jar 包。这里以 JDBC 操作 MySQL 数据库为例,步骤如下:

创建空项目,定义项目名称及路径:

image-20230122173738084

在File / Project Structure 中进行项目设置,JDK版本,编译版本等:

image-20230122173942616

创建新模块,指定名称及位置:

image-20230122174154153

在 jdbc-demo 模块中新建 Lib 文件夹:

image-20230122174526391

将下载好的 MySQL驱动 jar 包导入 Lib 目录下作为库文件:

image-20230122174641452

右键 MySQL 驱动 jar 包,点击 Add as Library ,并选择模块下有效:

image-20230122174725653

创建好工程以后,就可以编写代码操作数据库啦!

在 idea 中右键 src / new / Java Class ,输入类名 JDBCDemo 创建一个新的类。

第一步:注册驱动

//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");

目的是把 Driver 类加载到内存中。其实,Java 中用于注册驱动的是 registerDriver() 方法,而在 Driver 类中使用了该方法,所以只要把 Driver 类加载到内存中 ,包含 registerDriver 方法的静态代码块就会执行,驱动就会被注册。我们可以查看JDK源码中的Driver 类:

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

第二步:获取连接

String url="jdbc:mysql://localhost:3306?useSSL=false";
String username="root";
String pass word="abc123";
Connection conn = DriverManager.getConnection(url, username, password);

目的是通过 getConnection() 方法获取数据库连接 Connection 类对象,这里没有直接把数据传入方法之中,而是定义了三个局部变量,url,数据库用户名和密码,其中 url 参数有固定的语法格式:

jdbc:mysql://ip地址(域名):端口号?参数键值对1&参数键值对2

第三步:定义sql

String sql="update account set money=2000 where name='张三'";

目的是定义操作数据库的 sql 语句。

第四步:获取执行sql的对象

Statement stmt = conn.createStatement();

目的是在执行 sql 语句之前,先获取执行 sql 的对象 statement。

第五步:执行sql

int count = stmt.executeUpdate(sql);

目的是为了将 sql 发送到数据库服务端,让数据库服务端执行完 sql,并且返回一个结果,这里的 executeUpdate() 返回受影响的行数。

第六步:处理返回结果

 System.out.println(count);

目的是处理数据库服务端返回的 sq l执行结果,这里我们打印了 executeUpdate() 方法返回的受影响的行数。

第七步:释放资源

stmt.close();
conn.close();

目的是在完成对数据库的操作以后释放资源,否则数据库文件将一直被被程序占用,释放资源时遵循先开后释放的原则。

使用 JDBC 操作 MySQL 数据库完整代码:

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        String url="jdbc:mysql://localhost:3306/db1?useSSL=false";
        String username="root";
        String pass word="abc123";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql
        String sql="update account set money=2000 where name='张三'";
        //4.获取执行sql的对象
        Statement stmt = conn.createStatement();
        //5.执行sql
        int count = stmt.executeUpdate(sql);
        //6.处理结果
        System.out.println(count);
        //7.释放资源
        stmt.close();
        conn.close();
    }
}

标签:JDBC,Java,入门,数据库,MySQL,sql,操作
From: https://blog.51cto.com/u_15971932/6066738

相关文章

  • (数据库系统概论|王珊)第五章数据库完整性-第四、六、七节:约束命名子句、断言和触发器
    ​​pdf下载:密码7281​​​​专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解​​一:完整性约束命名子句(CONSTRAINT)SQL中......
  • drf从入门到飞升仙界 08
    断点调试使用#程序在debug模式运行,可以在任意位置停下,查看当前情况下变量数据的变化情况#使用pycharm调试程序-1.以debug模式运行、-2.在代码左侧加入断点(......
  • (数据库系统概论|王珊)第五章数据库完整性-第四、六、七节:约束命名子句、断言和触发器
    pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解一:完整性约束命名子句(CONSTRAINT)SQL中还提供了......
  • Java入门博客
    开始准备 新建一个file->new->project->emptyproject   新建一个file->new->module->java 打开projectstructure,修改这两处   修改注释的颜色 ......
  • jmeter操作Mysql数据库
    一、操作Mysql场景分析---1、接口返回数据有很多条,需要删除但无法通过接口或页面删除,就需要在数据库删除---2、接口返回的数据和数据库里的进行比对 二、jmeter操作数......
  • JDBC
    学习Jdbc的一些基本内容快捷键Ctrl+Alt+v定义常量Alt+Insert封装里的gettersetter方法1.DriverManger:驱动管理对象*功能1.注册驱动:告诉程序该使用哪一个数......
  • 关于微人事中POI导入文件到数据库的异常以及自己的一些技术心得
    前言在近四个月的时间里面,我的微人事项目才逐渐接近尾声,在昨天的测试接口中出现了两次数组越界以及一次空指针异常,三处异常我都通过吊事bug根据项目实际情况解决了,但......
  • Spring AOP入门
    SpringAOP入门1.导入坐标<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId>......
  • jdbc 更新 测 并发
    用到junitperf-1.9.1.jar这个包用到junit4 packagecom.bingfa;importjava.sql.Connection;publicfinalclassJDBCUtils{privateJDBCUtils(){}privatesta......
  • hibernate 把类输出成数据库表
      packagecom.hibernate.entity;importjava.io.Serializable;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id......