JDBC快速入门:从环境搭建到代码编写,轻松实现数据库增删改查操作!

通过上篇文章我们已经对JDBC的基本概念和工作原理都有了一定的了解,本篇文章我们继续来探索如何从零开始,一步步搭建开发环境,编写代码,最后实现数据库的增删改查操作。

一、开发环境搭建

首先,我们需要准备的开发环境有:Java开发工具包(JDK)、数据库(如MySQL)、数据库驱动(如MySQL Connector/J)。

安装JDK:

你可以从Oracle官网下载适合你操作系统的JDK版本,按照提示进行安装即可。相信这个大家早已经安装过了,在这里就不再多说了。

安装数据库:

同样在官网下载MySQL安装包,按照提示进行安装。安装完成后,需要创建一个数据库和表,用于后续的测试。

下载数据库驱动:

在MySQL官网下载对应版本的MySQL Connector/J,将其解压后的jar文件添加到你的项目类路径中。

具体的操作如下:

1、创建一个普通的空项目

填写上项目名称与路径

2、配置JDK版本

3、创建一个子模块(jdbc快速入门的程序在这里面写)

这里填写上子模块名称

然后下一步,点击ok,这个子模块就创建完成了

4、导入jar包

二、使用JDBC访问数据库

JDBC操作数据库步骤如下:

  • 注册驱动

  • 获取数据库连接对象 (Connection)

  • 定义SQL语句

  • 获取执行SQL的对象 (Statement)

  • 执行SQL

  • 处理集并返回结果(ResultSet)

  • 释放资源

下面通过代码来了解一下JDBC代码的编写步骤与操作流程。

1、创建数据库和表:

sql 复制代码
CREATE DATABASE `jdbc_test` DEFAULT CHARSET utf8mb4;
CREATE TABLE `account`(
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ID', 
`name` varchar(20) NOT NULL COMMENT '姓名',
`salary` int(11)  COMMENT '薪资',
);

2、编写Java程序:

java 复制代码
package com.baidou.jdbc;

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

public class JDBCDemo {
   public static void main(String[] args) throws Exception {
   // 1、注册驱动
   Class.forName("com.mysql.jdbc.Driver");
   
   // 2、获取连接
   String url ="jdbc:mysql://127.0.0.1:3306/jdbc_test?useSSL=false";
   String user = "root";
   String password = "123456";
   Connection conn = DriverManager.getConnection(url, user, password);
   
   
        // 3、定义sql语句
        String sql = "insert into account(name,salary) values('王强',10000)";
        
        // 4、获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        
        // 5、执行sql
        int count = stmt.executeUpdate(sql);
        
        // 6、处理结果
        // 打印受影响的行数
        System.out.println(count);
        System.out.println(count>0?"插入成功":"插入失败");
        
        // 7、释放资源
        stmt.close();
        conn.close();
        }
  }      

控制输出结果如下:

表中的数据:

三、JDBC-API详解

JDBC API是Java语言访问数据库的标准API,它定义了一组类和接口,用于封装数据库访问的细节。主要包括以下几类:

1、DriverManager驱动管理对象

(1)注册驱动:

注册给定的驱动程序:staticvoid registerDriver(Driver driver);

在com.mysql.jdbc.Driver类中存在静态代码块;写代码有固定写法:

ini 复制代码
Class.forName("com.mysql.jdbc.Driver");

(2)获取数据库连接对象

具体实现是通过:

ini 复制代码
DriverManager.getConnection(url,username,password);

2、Connection数据库连接对象

(1)创建sql执行对象

ini 复制代码
conn.createStatement();

(2)可以执行事务的提交,回滚操作

scss 复制代码
conn.rollback();conn.setAutoCommit(false);

3、Statement执行sql语句的对象

用于向数据库发送要执行的sql语句(增删改查),其中有两个重要方法:

  • executeUpdate(String sql)
  • executeQuery(String sql)

前者用于DML操作,后者用于DQL操作。

4、ResultSet结果集对象

  • 打印输出时判断结果集是否为空,rs.next()
  • 若知字段类型可使用指定类型如,rs.getInt()获取数据

在这里给大家分享一下【云端源想】学习平台,无论你是初学者还是有经验的开发者,这里都有你需要的一切。包含课程视频、在线书籍、在线编程、一对一咨询等等,现在功能全部是免费的,点击这里,立即开始你的学习之旅!

四、提取工具类并完成增删改查操作

在上面介绍了可以通过JDBC对数据库进行增删改查操作,但是如果每次对数据库操作一次都要重新加载一次驱动,建立连接等重复性操作的话,会造成代码的冗余。

因此下面通过封装一个工具类来实现对数据库的增删改查操作。

1、建立配置文件db.properties文件

properties文件是Java支持的一种配置文件类型(所谓支持是因为Java提供了properties类,来读取properties文件中的信息)。记得一定要将此文件直接放在src目录下!!!不然后面执行可能找不到此配置文件!!

ini 复制代码
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=lcl403020

2、建立工具类JdbcUtils.java

有了这个工具类,之后的增删改查操作可直接导入这个工具类完成获取连接,释放资源的操作,很方便,接着往下看。

java 复制代码
package jdbcFirstDemo.src.lesson02.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JdbcUtils {
   private static String driver=null;
   private static String url=null;
   private static String username=null;
   private static String password=null;
   static  {
      try{
      InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");           Properties properties=new Properties();
      properties.load(in);
      

            driver=properties.getProperty("driver");
            url=properties.getProperty("url");
            username=properties.getProperty("username");
            password=properties.getProperty("password");
            //驱动只需要加载一次
            Class.forName(driver);
         } catch (IOException e) {
            throw new RuntimeException(e);
         } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
            }
            }
            //获取连接
            public static Connection getConnection() throws SQLException {
                return DriverManager.getConnection(url,username,password);
            }
            //释放连接资源
            public static void release(Connection conn, Statement st, ResultSet rs)  {
               if(rs!=null){
                  try{
                      rs.close();
                  } catch (SQLException e) {
                      throw new RuntimeException(e);
                }
            }
            

        if(st!=null){
           try {
               st.close();
           } catch (SQLException e) {
              throw new RuntimeException(e);
              }
            } 
            if(conn!=null){
              try {
                  conn.close();
              } catch (SQLException e) {
                 throw new RuntimeException(e);
                 } 
           }

       }
    }

3、 插入数据(DML)

java 复制代码
package jdbcFirstDemo.src.lesson02;
import jdbcFirstDemo.src.lesson02.utils.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestInsert {
    public static void main(String[] args) {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        try{
            conn= JdbcUtils.getConnection();
            st=conn.createStatement();
            String sql="insert into users  (id, name, password, email, birthday) VALUES (7,'cll',406020,'30812290','2002-03-03 10:00:00')";
            int i=st.executeUpdate(sql);
            if(i>0){
                System.out.println("插入成功!");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

运行结果:

4、修改数据(DML)

java 复制代码
package jdbcFirstDemo.src.lesson02;
import jdbcFirstDemo.src.lesson02.utils.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestUpdate {
    public static void main(String[] args) {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        try{
            conn= JdbcUtils.getConnection();
            st=conn.createStatement();
            String sql="update users set name='haha' where id=2";
            int i=st.executeUpdate(sql);
            if(i>0){
                System.out.println("修改成功!");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

运行结果:

5、 删除数据(DML)

java 复制代码
package jdbcFirstDemo.src.lesson02;
import jdbcFirstDemo.src.lesson02.utils.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestDelete {
    public static void main(String[] args) {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        try{
            conn= JdbcUtils.getConnection();
            st=conn.createStatement();
            String sql="delete from users where id=1";
            int i=st.executeUpdate(sql);
            if(i>0){
                System.out.println("删除成功!");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

运行结果:删除掉了id=1的那一条数据

6、 查询数据(DQL)

ini 复制代码
package jdbcFirstDemo.src.lesson02;
import jdbcFirstDemo.src.lesson02.utils.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestQuery {
    public static void main(String[] args) throws SQLException {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        conn= JdbcUtils.getConnection();
        st=conn.createStatement();
        //sql
        String sql="select * from users";
        rs=st.executeQuery(sql);
        while (rs.next()){
            System.out.println(rs.getString("name"));
        }
    }
}

运行结果:

本文从开发环境搭建到代码编写步骤以及JDBC API做了详细的讲解,最后通过封装一个工具类来实现对数据库的增删改查操作,希望能够帮助你快速入门JDBC,关于数据库连接池部分,我们下期接着讲,敬请期待哦!

相关推荐
LB211220 分钟前
Redis 黑马skyout
java·数据库·redis
豐儀麟阁贵27 分钟前
Java知识点储备
java·开发语言
hrrrrb33 分钟前
【Spring Security】Spring Security 密码编辑器
java·hive·spring
豐儀麟阁贵36 分钟前
2.3变量与常量
java·开发语言
兮动人2 小时前
Eureka注册中心通用写法和配置
java·云原生·eureka
爱编程的小白L4 小时前
基于springboot志愿服务管理系统设计与实现(附源码)
java·spring boot·后端
聪明的笨猪猪6 小时前
Java Redis “持久化”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
聪明的笨猪猪6 小时前
Java Redis “核心基础”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
奋斗的小monkey8 小时前
Spring Boot 3.x核心特性与性能优化实战
java·spring boot·微服务·性能优化·响应式编程