Java JDBC 预编译语句操作数据库:Account 表示例

本示例展示了如何使用 Java 的 JDBC 预编译语句来操作数据库 account 表。使用预编译语句可以提高代码效率和安全性,因为它可以防止 SQL 注入攻击。以下是具体的操作步骤:

1. 修改1号数据的 salary 为 800

使用 UPDATE 语句修改 id 为 1 的数据的 salary 为 800。

2. 添加一条记录

使用 INSERT 语句添加一条新的记录。

3. 删除刚才添加的记录

使用 DELETE 语句删除刚才添加的记录。

4. 查询所有记录,将其封装为List内容

使用 SELECT 语句查询所有记录,并将结果封装为 List 类型。

示例代码:

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AccountTableOperation { private static final String URL = "jdbc:mysql://localhost:3306/database_name"; private static final String USERNAME = "username"; private static final String PASSWORD = "password";

public static void main(String[] args) {
    try {
        // 1. 注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        // 2. 建立连接
        Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);

        // 3. 创建预编译对象
        PreparedStatement preparedStatement;

        // 4. 修改1号数据的salary为800
        String updateSql = "UPDATE account SET salary = ? WHERE id = ?";
        preparedStatement = connection.prepareStatement(updateSql);
        preparedStatement.setDouble(1, 800.0);
        preparedStatement.setInt(2, 1);
        preparedStatement.executeUpdate();

        // 5. 添加一条记录
        String insertSql = "INSERT INTO account (id, name, salary) VALUES (?, ?, ?)";
        preparedStatement = connection.prepareStatement(insertSql);
        preparedStatement.setInt(1, 2);
        preparedStatement.setString(2, "John");
        preparedStatement.setDouble(3, 1000.0);
        preparedStatement.executeUpdate();

        // 6. 删除刚才添加的记录
        String deleteSql = "DELETE FROM account WHERE id = ?";
        preparedStatement = connection.prepareStatement(deleteSql);
        preparedStatement.setInt(1, 2);
        preparedStatement.executeUpdate();

        // 7. 查询所有记录,将其封装为List
        String selectSql = "SELECT * FROM account";
        preparedStatement = connection.prepareStatement(selectSql);
        ResultSet resultSet = preparedStatement.executeQuery();

        List<Account> accounts = new ArrayList<>();
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            double salary = resultSet.getDouble("salary");

            Account account = new Account(id, name, salary);
            accounts.add(account);
        }

        // 输出查询结果
        for (Account account : accounts) {
            System.out.println(account);
        }

        // 8. 关闭连接
        preparedStatement.close();
        connection.close();
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}

}

class Account { private int id; private String name; private double salary;

public Account(int id, String name, double salary) {
    this.id = id;
    this.name = name;
    this.salary = salary;
}

// 省略getter和setter方法

@Override
public String toString() {
    return "Account{" +
            "id=" + id +
            ", name='" + name + ''' +
            ", salary=" + salary +
            '}';
}

}

请注意将示例代码中的 database_name 替换为实际的数据库名称,usernamepassword 替换为实际的数据库用户名和密码。


原文地址: https://www.cveoy.top/t/topic/pLiN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录