JDBC增删改查操作的基本步骤

ops/2024/10/18 1:49:43/

JDBC(Java Database Connectivity)是一种用于执行数据库操作的Java API。以下是使用JDBC进行增删改查(CRUD)操作的基本步骤和代码示例。

步骤:

  1. 加载数据库驱动:确保JDBC驱动程序类被加载。
  2. 建立数据库连接:使用DriverManager.getConnection()方法连接到数据库
  3. 创建Statement或PreparedStatement对象:用于执行SQL语句。
  4. 执行SQL语句:使用executeQuery()执行查询,使用executeUpdate()执行更新(包括增删改)。
  5. 处理结果:对于查询操作,使用ResultSet对象来处理返回的数据。
  6. 关闭资源:关闭ResultSetStatementPreparedStatement以及Connection对象。

代码示例:

1. 增加(Create)
java">import java.sql.*;public class JdbcInsertExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/yourdatabase";String username = "yourusername";String password = "yourpassword";String sql = "INSERT INTO users (username, password) VALUES (?, ?)";try (Connection conn = DriverManager.getConnection(url, username, password);PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "newUser");pstmt.setString(2, "newPassword");int affectedRows = pstmt.executeUpdate();if (affectedRows > 0) {System.out.println("添加成功!");}} catch (SQLException e) {e.printStackTrace();}}
}
2. 删除(Delete)
java">import java.sql.*;public class JdbcDeleteExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/yourdatabase";String username = "yourusername";String password = "yourpassword";String sql = "DELETE FROM users WHERE username = ?";try (Connection conn = DriverManager.getConnection(url, username, password);PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "userToDelete");int affectedRows = pstmt.executeUpdate();if (affectedRows > 0) {System.out.println("删除成功!");}} catch (SQLException e) {e.printStackTrace();}}
}
3. 修改(Update)
java">import java.sql.*;public class JdbcUpdateExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/yourdatabase";String username = "yourusername";String password = "yourpassword";String sql = "UPDATE users SET password = ? WHERE username = ?";try (Connection conn = DriverManager.getConnection(url, username, password);PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "newPassword");pstmt.setString(2, "existingUser");int affectedRows = pstmt.executeUpdate();if (affectedRows > 0) {System.out.println("修改成功!");}} catch (SQLException e) {e.printStackTrace();}}
}
4. 查询(Query)
java">import java.sql.*;public class JdbcQueryExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/yourdatabase";String username = "yourusername";String password = "yourpassword";String sql = "SELECT id, username, password FROM users WHERE username = ?";try (Connection conn = DriverManager.getConnection(url, username, password);PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "userToQuery");try (ResultSet rs = pstmt.executeQuery()) {if (rs.next()) {int id = rs.getInt("id");String username = rs.getString("username");String password = rs.getString("password");System.out.println("ID: " + id + ", Username: " + username + ", Password: " + password);}}} catch (SQLException e) {e.printStackTrace();}}
}

在这些示例中,我们使用了try-with-resources语句来自动关闭数据库资源,这是Java 7及以上版本提供的一个特性。如果使用的是Java 6或更早的版本,需要在finally块中手动关闭这些资源。

请确保根据你的数据库配置替换urlusernamepassword变量的值,以及根据数据库表结构调整SQL语句和结果处理逻辑。此


http://www.ppmy.cn/ops/126352.html

相关文章

WPF入门_02依赖属性

1、依赖属性主要有以下三个优点 1)依赖属性加入了属性变化通知、限制、验证等功能。这样可以使我们更方便地实现应用,同时大大减少了代码量 2)节约内存:在WinForm中,每个UI控件的属性都赋予了初始值,这样每个相同的控件在内存中都会保存一份初始值。而WPF依赖属性很好地…

GitHub如何推送文件到仓库?

要将本地项目推送到 GitHub 上,可以按照以下步骤操作: 在 GitHub 上创建一个新的仓库: 登录你的 GitHub 账号。点击页面右上角的 “” 按钮,并选择 “New repository”。填写仓库名称,可以选择是否公开(Pub…

可变参数函数、可变参数模板和折叠表达式

可变参数函数 可变参数是在C编程中&#xff0c;允许函数接受不定数量的参数。这种特性可以帮助我们处理多种情况&#xff0c;例如日志记录、数学计算等。 在C中&#xff0c;可变参数通常通过C风格的可变参数函数实现&#xff0c;需要包含<cstdarg>头文件。 对可变参数…

小说漫画系统 fileupload.php 任意文件上传漏洞复现

FOFA搜索语句 "/Public/home/mhjs/jquery.js" 漏洞复现 1.向靶场发送如下数据包 POST /Public/webuploader/0.1.5/server/fileupload.php HTTP/2 Host: xxx.xxx.xx.xx Cookie: PHPSESSID54bc7gac1mgk0l3nm8cv6sek07; uloginid677742617 Cache-Control: max-age0…

阿里 C++面试,算法题没做出来,,,

我本人是非科班学 C 后端和嵌入式的。在我面试的过程中&#xff0c;竟然得到了阿里​ C 研发工程师的面试机会。因为&#xff0c;阿里主要是用 Java 比较多&#xff0c;C 的岗位比较少​&#xff0c;所以感觉这个机会还是挺难得的。 阿里 C 研发工程师面试考了我一道类似于快速…

android——自定义控件(不停变化的textview、开关switch、动画效果的打勾)

一、从开始数字到结束数字&#xff0c;不断变化 import android.animation.TypeEvaluator; import android.animation.ValueAnimator; import android.content.Context; import android.util.AttributeSet; import android.view.animation.AccelerateDecelerateInterpolator;i…

Linux之如何找回 root 密码?

1、启动系统&#xff0c;进入开界面&#xff0c;在界面中按“e"进入编辑界面 2、进入编辑界面&#xff0c;使用键盘上的上下键把光标往下移动&#xff0c;找到以”Linux16“开通内容所在的行数&#xff0c;在行的最后面输入&#xff1a;init/bin/sh 3、输入完成后&…

【Spring AI】Java实现类似langchain的第三方函数调用_原理与详细示例

Spring AI 介绍 &#xff1a;简化Java AI开发的统一接口解决方案 在过去&#xff0c;使用Java开发AI应用时面临的主要困境是没有统一且标准的封装库&#xff0c;导致开发者需要针对不同的AI服务提供商分别学习和对接各自的API&#xff0c;这增加了开发难度与迁移成本。而Sprin…