java 使用JDBC构建简单的数据访问层实例详解

下面我来详细讲解如何使用Java JDBC构建简单的数据访问层实例。

1. JDBC概述

Java数据库连接(Java Database Connectivity,简称JDBC),是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,目前最新版是JDBC 4.3。

JDBC API提供了访问多种关系型数据库的标准方法,包括连接数据库、执行SQL语句、处理结果集等。使用JDBC时,需要导入Java SE中的jdbc.jar包。

2. JDBC实现步骤

使用JDBC实现数据访问层主要包括以下步骤:

  1. 加载JDBC驱动程序
  2. 获得数据库连接
  3. 创建Statement对象
  4. 执行SQL语句
  5. 处理结果集
  6. 释放资源

具体实现步骤如下:

//导入包
import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        //1. 加载JDBC驱动程序
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("JDBC driver loaded");
        } catch (ClassNotFoundException e) {
            System.out.println("Failed to load JDBC driver");
            e.printStackTrace();
        }

        Connection conn = null;
        Statement stmt = null;
        try {
            //2. 获得数据库连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8", "root", "root");

            //3. 创建Statement对象
            stmt = conn.createStatement();

            //4. 执行SQL语句
            String sql = "SELECT * FROM user";
            ResultSet rs = stmt.executeQuery(sql);

            //5. 处理结果集
            while(rs.next()) {
                System.out.println(rs.getString("name") + " " + rs.getInt("age"));
            }

            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6. 释放资源
            try {
                if(stmt != null) stmt.close();
                if(conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

上面的代码中,我们使用MySQL数据库作为示例,其他关系型数据库的使用方法基本相同。

3. 示例1

假设我们需要实现用户注册功能,包括插入用户名和密码到数据库中。代码如下:

//导入包
import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        //1. 加载JDBC驱动程序
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("JDBC driver loaded");
        } catch (ClassNotFoundException e) {
            System.out.println("Failed to load JDBC driver");
            e.printStackTrace();
        }

        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            //2. 获得数据库连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8", "root", "root");

            //3. 创建PreparedStatement对象
            String sql = "INSERT INTO user(name, password) VALUES(?,?)";
            pstmt = conn.prepareStatement(sql);

            //4. 设置参数
            pstmt.setString(1, "Tom");
            pstmt.setString(2, "123456");

            //5. 执行SQL语句
            int result = pstmt.executeUpdate();
            System.out.println("Insert count: " + result);

            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6. 释放资源
            try {
                if(pstmt != null) pstmt.close();
                if(conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

上面的代码中,我们使用PreparedStatement对象来避免SQL注入问题,还使用了连接池来提高性能。

4. 示例2

下面我们再来看一个示例,假设我们需要实现分页查询功能。代码如下:

//导入包
import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        int page = 2;
        int pageSize = 10;

        //1. 加载JDBC驱动程序
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("JDBC driver loaded");
        } catch (ClassNotFoundException e) {
            System.out.println("Failed to load JDBC driver");
            e.printStackTrace();
        }

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            //2. 获得数据库连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8", "root", "root");

            //3. 创建PreparedStatement对象
            String sql = "SELECT * FROM user LIMIT ?,?";
            pstmt = conn.prepareStatement(sql);

            int start = (page - 1) * pageSize;
            pstmt.setInt(1, start);
            pstmt.setInt(2, pageSize);

            //4. 执行SQL语句
            rs = pstmt.executeQuery();

            //5. 处理结果集
            while(rs.next()) {
                System.out.println(rs.getString("name") + " " + rs.getInt("age"));
            }

            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6. 释放资源
            try {
                if(rs != null) rs.close();
                if(pstmt != null) pstmt.close();
                if(conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

上面的代码中,我们使用了LIMIT语句来实现分页查询,其中page和pageSize是用户传递的参数。

总结

以上就是使用Java JDBC构建简单的数据访问层实例的攻略,主要包括了JDBC概述、实现步骤以及两个示例。如有任何问题,欢迎留言讨论。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 使用JDBC构建简单的数据访问层实例详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • jQuery实现级联下拉框实战(5)

    以下是“jQuery实现级联下拉框实战(5)”的详细攻略: 一、概述 本篇文章是“jQuery实现级联下拉框实战”系列的第五篇,将会探讨如何使用jQuery实现级联下拉框。 在本篇文章中,我们将会实现对于多个级别的下拉框进行级联操作,以此来实现彼此之间的联动。并且,我们将会使用Ajax的方式来获取下一级的选项内容。 二、实现步骤 本文主要分为以下几个步骤来实…

    Java 2023年6月15日
    00
  • Java语言中flush()函数作用及使用方法详解

    Java语言中flush()函数作用及使用方法详解 1. flush()函数的作用 在Java语言中,flush()函数用于清空输出流缓冲区,强制将缓冲区的内容输出到目标位置(比如文件、网络等)。具体来说,flush()函数将输出流中的所有缓冲数据都写入到目标位置,同时清空缓冲区,保证数据能够及时地被输出到目标位置。在输出流关闭之前,我们经常需要调用flus…

    Java 2023年5月26日
    00
  • SpringBoot+MySQL+Jpa实现对数据库的增删改查和分页详解

    前置知识: 在学习本篇攻略之前,需要熟悉如下知识: SpringBoot: 一款基于Spring框架的快速开发脚手架工具,可以快速创建Spring应用 MySQL: 一款流行的关系型数据库 JPA: Java持久化API,是一套标准的ORM框架 步骤: 1.配置MySQL数据库 首先需要进行mysql数据库的安装和配置。这里不再赘述,建议在官网上进行下载和安…

    Java 2023年5月20日
    00
  • Java+mysql实现学籍管理系统

    Java+MySQL实现学籍管理系统攻略 1. 系统功能说明 本学籍管理系统主要实现以下功能: 新增学生信息:添加学生姓名、性别、出生日期、身份证号、联系方式等信息; 修改学生信息:修改已有学生信息; 删除学生信息:删除已有学生信息; 查询学生信息:通过学生姓名或者身份证号来查询学生信息; 统计学生数量:统计已有学生的数量。 2. 开发环境和工具 开发平台:…

    Java 2023年5月19日
    00
  • SpringSessionRedis配置及发现的问题讲解

    下面是“SpringSessionRedis配置及发现的问题讲解”的完整攻略。 什么是SpringSessionRedis SpringSessionRedis是一个为Spring应用程序提供分布式会话管理的解决方案。它使用Redis来存储会话信息,从而实现了集群环境下的会话管理。 使用SpringSessionRedis,只需要在Spring应用程序中添加…

    Java 2023年5月20日
    00
  • Mybatis-Plus 搭建与使用入门(小结)

    Mybatis-Plus 搭建与使用入门(小结) 本文介绍了如何使用 Mybatis-Plus 搭建一个基本的 CRUD 应用,并对其进行增强功能的使用。整个过程包含以下步骤: 1. 环境准备 为了使用 Mybatis-Plus,我们需要在项目中添加相关的依赖: <dependency> <groupId>com.baomidou&l…

    Java 2023年5月20日
    00
  • java生成指定范围随机数的多种代码

    下面是“java生成指定范围随机数”的完整攻略: 1. 使用java.util.Random类生成随机数 使用java.util.Random类可以生成随机数,这个类提供了一系列的方法来生成数字、布尔值和伪随机字节流。 代码示例1:生成指定范围的随机数 下面是一个例子,生成指定范围内的随机数: import java.util.Random; public …

    Java 2023年5月26日
    00
  • Maven环境安装配置和新建项目介绍

    下面我将详细讲解 Maven 环境安装配置和新建项目的完整攻略,包含以下几个步骤: 安装和配置 Java 环境 下载 Maven 并安装 配置 Maven 环境变量 新建 Maven 项目 1. 安装和配置 Java 环境 在安装 Maven 前需要先安装 Java 环境,可以到 Java 官网下载对应版本的 JDK 进行安装并配置环境变量。 2. 下载 M…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部