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

devtools/2025/1/9 0:02:59/

1 SQL概述

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

2 SQL的基本操作

SQL的基本操作包括:

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

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

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

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

3 执行SQL查询

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

示例代码(查询)

 
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插入语句向数据库添加新记录。

示例代码(插入)

 
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更新语句修改数据库中的数据。

示例代码(更新)

 
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删除语句从数据库中移除数据。

示例代码(删除)

 
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管理数据库事务,确保数据的完整性和一致性。

示例代码(事务)

 
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注入)

 
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的财富。下一节,我们将探讨事务处理,这是确保数据库操作原子性、一致性、隔离性和持久性的关键。


http://www.ppmy.cn/devtools/149021.html

相关文章

基于微信小程序疫苗预约系统ssm+论文源码调试讲解

第四章 系统设计 到目前为止,市面上已经存在了各种各样的软件系统,从系统的分类着手,主要应用范围倾向于办公系统,娱乐系统,社交系统,然后下面有很多比较细的分支系统。很多系统已经经过了市场的考验&…

Elixir语言的正则表达式

Elixir语言中的正则表达式 引言 正则表达式是用于匹配文本模式的一种强大工具。在很多编程语言中,正则表达式被广泛应用于字符串的查找、替换和验证。Elixir作为一门现代化的函数式编程语言,也提供了对正则表达式的支持,方便开发者进行复杂…

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口:https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口:https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口:https://ai-to.cn/url/?ulihaimao

C# OpenCV机器视觉:背景减除与前景分离

在实验室的一角,阳光仿若一个急性子的小精灵,迫不及待地穿过窗帘缝隙,在阿强的桌面上欢快跳跃,洒下一片片斑驳陆离的光影,似乎在催促着阿强赶紧开启今日的奇妙探索。阿强端坐在桌前,眼神炽热地盯着眼前那台…

无人机培训机构模拟考试系统技术详解

无人机培训机构模拟考试系统技术是无人机培训领域中的一项重要技术,它集成了高精度模拟技术、先进的数据处理能力及高度交互的操作界面,为无人机操作员提供了一个安全、高效、接近实战的训练与考试环境。以下是对该技术的详细解析: 一、系统…

Elasticsearch:搜索相关性

这里写目录标题 一、相关性的概述二、自定义评分策略1、TF-IDF算法2、BM25算法 三、自定义评分策略1、Index Boost:在索引层面修改相关性2、boosting:修改文档相关性3、negative_boost:降低相关性4、function_score:自定义评分5、…

C++二十三种设计模式之适配器模式

C二十三种设计模式之适配器模式 一、组成二、特点三、目的四、缺点五、示例代码 一、组成 抽象适配器类:声明转换器接口。 具体适配器类:拥有适配者类的持有,实现转换器接口。 适配者类:被适配的类。 二、特点 1、在具体适配器…

使用 Ollama 和 Go 开发 RAG 应用程序

使用 Ollama 通过 Go 创建 RAG 应用程序来利用本地模型。 关于各种开放模型,有很多话要说。其中一些被称为 Mixtral 系列,各种规模都有,而一种可能不太为人所知的是 openbiollm,这是 Llama 3 针对医疗领域的改编版。通过实现它们…