SQL与数据库交互:Java的财富管理

1 SQL概述

SQL(Structured Query Language)是一种专门用来与数据库通信的语言。它包括了数据查询、数据操作、数据定义和数据控制等多种功能。

2 SQL的基本操作

SQL的基本操作包括:

  1. 查询(SELECT):从数据库中检索数据。

  2. 插入(INSERT):向数据库表中添加新数据。

  3. 更新(UPDATE):修改数据库表中的数据。

  4. 删除(DELETE):从数据库表中删除数据。

3 执行SQL查询

在Java中,可以使用JDBC执行SQL查询,并处理返回的结果集。

示例代码(查询)

复制代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SqlQueryExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "user";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM customers")) {

            while (rs.next()) {
                // 通过列名获取字段值
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("Name: " + name + ", Age: " + age);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4 执行SQL插入

使用SQL插入语句向数据库添加新记录。

示例代码(插入)

复制代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class SqlInsertExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "user";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement()) {

            String sql = "INSERT INTO customers (name, age) VALUES ('John Doe', 30)";
            int rowsInserted = stmt.executeUpdate(sql);
            if (rowsInserted > 0) {
                System.out.println("A new customer was inserted successfully!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5 执行SQL更新

使用SQL更新语句修改数据库中的数据。

示例代码(更新)

复制代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class SqlUpdateExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "user";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement()) {

            String sql = "UPDATE customers SET age = 31 WHERE name = 'John Doe'";
            int rowsUpdated = stmt.executeUpdate(sql);
            if (rowsUpdated > 0) {
                System.out.println("Customer's age was updated successfully!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

6 执行SQL删除

使用SQL删除语句从数据库中移除数据。

示例代码(删除)

复制代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class SqlDeleteExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "user";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement()) {

            String sql = "DELETE FROM customers WHERE name = 'John Doe'";
            int rowsDeleted = stmt.executeUpdate(sql);
            if (rowsDeleted > 0) {
                System.out.println("Customer was deleted successfully!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

7 事务管理

在Java中,可以使用JDBC管理数据库事务,确保数据的完整性和一致性。

示例代码(事务)

复制代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class SqlTransactionExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "user";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password)) {
            conn.setAutoCommit(false); // 开始事务

            try (Statement stmt = conn.createStatement()) {
                // 执行一些数据库操作...
                stmt.executeUpdate("UPDATE customers SET age = 32 WHERE name = 'John Doe'");

                conn.commit(); // 提交事务
            } catch (Exception e) {
                conn.rollback(); // 回滚事务
                throw e;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

8 SQL注入防护

为了防止SQL注入攻击,应避免直接拼接SQL语句,并使用PreparedStatement来参数化查询。

示例代码(使用PreparedStatement防止SQL注入)

复制代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class SqlInjectionProtectionExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "user";
        String password = "password";
        String name = "' OR '1'='1"; // 恶意输入

        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM customers WHERE name = ?")) {

            pstmt.setString(1, name);
            try (ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    // 处理结果集
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

通过这一节的学习,你现在应该对SQL与数据库交互有了深入的理解。SQL是管理数据库中数据的重要工具,而Java通过JDBC提供了与数据库进行SQL交互的能力。掌握这些技能,可以帮助你有效地管理数据库中的数据,就像是管理Java的财富。下一节,我们将探讨事务处理,这是确保数据库操作原子性、一致性、隔离性和持久性的关键。

相关推荐
Leon-Ning Liu3 分钟前
MySQL数据恢复实践:binlog2sql数据追加
数据库·mysql
嵌入式-老费6 分钟前
esp32开发与应用(看门狗测试)
java·开发语言·数据库
czhc11400756636 分钟前
615:代码细节
数据库
知识分享小能手12 分钟前
Hadoop学习教程,从入门到精通, HBase 分布式数据库 — 完整知识点与案例代码(8)
数据库·hadoop·分布式
罗政14 分钟前
AI工作流实现Excel自动化+SQL,零 VBA ,零公式,电商订单分析案例 | DTBot
sql·自动化·excel
吴声子夜歌16 分钟前
SQL经典实例——处理数字
java·数据库·sql
NineData22 分钟前
日常巡检 Oracle 时,ChatDBA 怎么把会话、SQL 和等待事件一起看
数据库·sql·oracle·ninedata·故障排查·chatdba·实例巡检
海天一色y27 分钟前
深入理解 RAG 技术:从语义张量到向量数据库,Milvus 与 FAISS 全面对比
数据库·milvus·faiss
爱吃羊的老虎27 分钟前
【数据库】模块二:SQL 语句、高级特性与优化
数据库·oracle
Rain50927 分钟前
2.4. PostgreSQL 数据库连接与实战指南
前端·数据库·人工智能·后端·postgresql·数据分析