java 数据库连接与增删改查操作实例详解

Java 数据库连接与增删改查操作实例详解

数据库连接

在 Java 中,可以通过使用 JDBC 驱动程序来实现与数据库的连接。步骤如下:
1. 加载驱动程序
2. 建立数据库连接
3. 关闭数据库连接

加载驱动程序

Java 中的 DriverManager 类提供了一个用于加载 JDBC 驱动程序的 registerDriver() 方法。驱动程序可以通过 Class.forName() 方法来加载:

Class.forName("com.mysql.jdbc.Driver");

建立数据库连接

使用 DriverManager 管理委托对象 DriverManager.getConnection() 获取连接并进行相应的操作:

String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

关闭数据库连接

在 Java 中,需要在使用完数据库连接之后及时关闭连接。释放资源并防止应用程序中的隐式封锁。

if (conn != null) {
    try {
        conn.close();
    } catch (SQLException e) {
        //处理异常
    }
}

增删改查操作

在 Java 中,可以通过 JDBC 对数据库进行增删改查等操作。使用 Statement 和 PreparedStatement 对象执行 SQL 语句。

查询操作

创建 Statement 或 PreparedStatement 对象后,可以使用 executeQuery() 方法执行 SQL SELECT 命令。调用 ResultSet 对象的 getter 方法可以获取查询结果:

String sql = "SELECT * FROM user";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
    System.out.println(rs.getString("name"));
}

插入操作

使用 INSERT INTO 命令插入一条记录时,可以使用 Statement 或 PreparedStatement 对象执行。调用 executeUpdate() 方法可以获取影响的行数:

String sql = "INSERT INTO user (name, age, email) VALUES (?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "张三");
ps.setInt(2, 18);
ps.setString(3, "zhangsan@123.com");
int row = ps.executeUpdate();
System.out.println("新增了 " + row + " 条数据。");

更新操作

使用 UPDATE 命令更新一条记录时,可以使用 Statement 或 PreparedStatement 对象执行。调用 executeUpdate() 方法可以获取影响的行数:

String sql = "UPDATE user SET age = ? WHERE name = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 20);
ps.setString(2, "张三");
int row = ps.executeUpdate();
System.out.println("更新了 " + row + " 条数据。");

删除操作

使用 DELETE FROM 命令删除一条记录时,可以使用 Statement 或 PreparedStatement 对象执行。调用 executeUpdate() 方法可以获取影响的行数:

String sql = "DELETE FROM user WHERE name = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "张三");
int row = ps.executeUpdate();
System.out.println("删除了 " + row + " 条数据。");

示例

下面是一个完整的示例,演示了如何建立数据库连接并执行增删改查操作:

import java.sql.*;

public class JdbcDemo {

    private static final String url = "jdbc:mysql://localhost:3306/test";
    private static final String user = "root";
    private static final String password = "123456";

    public static void main(String[] args) {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接成功!");
            //插入数据
            String insertSql = "INSERT INTO user (name, age, email) VALUES (?, ?, ?)";
            PreparedStatement psInsert = conn.prepareStatement(insertSql);
            psInsert.setString(1, "张三");
            psInsert.setInt(2, 18);
            psInsert.setString(3, "zhangsan@123.com");
            int insertRow = psInsert.executeUpdate();
            System.out.println("新增了 " + insertRow + " 条数据。");
            //查询数据
            String selectSql = "SELECT * FROM user";
            PreparedStatement psSelect = conn.prepareStatement(selectSql);
            ResultSet rs = psSelect.executeQuery();
            while(rs.next()) {
                System.out.println(rs.getString("name") + "  " + rs.getInt("age") + "  " + rs.getString("email"));
            }
            //更新数据
            String updateSql = "UPDATE user SET age = ? WHERE name = ?";
            PreparedStatement psUpdate = conn.prepareStatement(updateSql);
            psUpdate.setInt(1, 20);
            psUpdate.setString(2, "张三");
            int updateRow = psUpdate.executeUpdate();
            System.out.println("更新了 " + updateRow + " 条数据。");
            //删除数据
            String deleteSql = "DELETE FROM user WHERE name = ?";
            PreparedStatement psDelete = conn.prepareStatement(deleteSql);
            psDelete.setString(1, "张三");
            int deleteRow = psDelete.executeUpdate();
            System.out.println("删除了 " + deleteRow + " 条数据。");
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

以上示例演示了如何使用 PreparedStatement 对象执行 SQL 命令,包括插入、查询、更新、删除等操作,以及在使用完数据库连接后,及时关闭连接。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 数据库连接与增删改查操作实例详解 - Python技术站

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

相关文章

  • Java实现DES加解密算法解析

    Java实现DES加解密算法解析 DES算法简介 DES(Data Encryption Standard)是一种对称加密算法,是现今使用最普遍的加密算法之一。它使用64位密钥对64位的数据进行加密和解密,加密和解密使用相同的密钥,是一种对称算法。 DES算法分组加密,每次加密的明文长度为64bit,密钥长度为64bit,加密过程中,将明文分成64bit一组…

    Java 2023年5月26日
    00
  • @RequestBody时第二个字母大写,映射不到的解决

    使用Spring MVC时,通常可以使用@RequestBody注解来接收HTTP请求的JSON数据,并将请求体转换为Java对象。但在实际使用过程中,有时会遇到使用@RequestBody时第二个字母大写时,映射不到的问题。这是因为Spring MVC默认情况下使用的是Jackson库来进行JSON转换,而Jackson库的命名策略默认是采用小写字母和下划…

    Java 2023年5月26日
    00
  • 利用Java获取文件名、类名、方法名和行号的方法小结

    下面我来详细讲解一下“利用Java获取文件名、类名、方法名和行号的方法小结”的完整攻略。 获取文件名、类名、方法名和行号攻略 在Java开发中,我们有时候需要获取当前文件名、类名、方法名和行号等信息,以便于进行调试和日志输出等操作。下面是具体的获取方法: 获取文件名 获取当前文件名可以使用File类中的方法,具体代码如下: File file = new F…

    Java 2023年5月31日
    00
  • Spring Boot 自动配置的实现

    Spring Boot自动配置是Spring Boot的一个重要特性,它可以帮助我们快速构建应用程序,减少配置工作。以下是Spring Boot自动配置的实现的详细攻略: 自动配置原理 Spring Boot自动配置的原理是基于Spring的条件化配置机制。Spring Boot会根据应用程序的classpath、配置文件和其他条件来自动配置应用程序。如果应…

    Java 2023年5月15日
    00
  • 数组实现Java 自定义Queue队列及应用操作

    数组实现Java 自定义Queue队列及应用操作 队列(Queue)是一种基本数据结构,它在算法和程序设计中得到了广泛应用。队列主要是用来存储和管理一系列元素,并在这些元素中进行插入和删除操作。本篇攻略将详细介绍如何用Java数组来实现自定义队列,并列举相应的应用操作。 Queue定义 队列最基本的功能就是FIFO(先进先出),可在队列尾插入一个元素,也可在…

    Java 2023年5月27日
    00
  • SpringBoot 集成 Quartz + MySQL

    Quartz 简单使用Java SpringBoot 中,动态执行 bean 对象中的方法 源代码地址 => https://gitee.com/VipSoft/VipBoot/tree/develop/vipsoft-quartz 工作原理解读 只要配置好 DataSource Quartz 会自动进行表的数据操作, 添加 Quartz Job 任务…

    Java 2023年4月18日
    00
  • Java算法练习题,每天进步一点点(1)

    首先,对于这篇题解的标题,可以使用一二级标题展示: Java算法练习题,每天进步一点点(1) 题意说明 本练习题题目数量较多,可根据自己的情况自行选择练习。本文以题目1为例: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示…

    Java 2023年5月19日
    00
  • selenium+java破解极验滑动验证码的示例代码

    请见以下攻略: selenium+java破解极验滑动验证码的示例代码攻略 简介 极验滑动验证码是一种常用的图形验证码,它需要用户在滑动拼图的同时,滑块位置与拼图位置匹配,才能完成验证。本篇攻略讲解使用selenium结合java来破解极验滑动验证码,并提供两个示例说明。 准备工作 在使用selenium之前,你需要先下载安装好java sdk和seleni…

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