JAVA |日常开发中连接Mysql数据库增删改查详解
JAVA |日常开发中连接Mysql数据库增删改查详解
- 前言
- 一、准备工作
- 1.1 添加 MySQL JDBC 驱动依赖
- 1.2 了解连接信息
- 二、建立数据库连接
- 2.1 代码示例
- 2.2 步骤解析
- 三、执行增删改操作(使用 Statement)
- 3.1 插入数据(Insert)
- 3.2 更新数据(Update)
- 3.3 删除数据(Delete)
- 四、执行查询操作(使用 Statement 和 ResultSet)
- 五、使用 PreparedStatement(推荐)
- 5.1 优势
- 5.2 插入数据(Insert)示例
- 5.3 查询数据(Query)示例
- 结束语
- 优质源码分享
JAVA |日常开发中连接Mysql数据库增删改查详解
,在日常的Java开发中,连接MySQL数据库并执行增删改查(CRUD)操作是非常基础且重要的技能。本文将详细介绍如何在Java中连接MySQL数据库,以及如何进行数据的增加(Create)、读取(Read)、更新(Update)和删除(Delete)操作。
前言
在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。
一、准备工作
1.1 添加 MySQL JDBC 驱动依赖
如果是 Maven 项目,需要在pom.xml文件中添加以下依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql - connector - java</artifactId>
<version>8.0.33</version>
</dependency>
这使得 Java 项目能够通过 JDBC(Java Database Connectivity)与 MySQL 数据库进行通信。
1.2 了解连接信息
主机地址和端口: MySQL 数据库服务器的位置,通常本地主机是localhost,默认端口是3306。
数据库名称: 要连接并操作的具体数据库名称。
用户名和密码: 用于验证用户身份,以获取访问数据库的权限。
二、建立数据库连接
2.1 代码示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnection {
public static void main(String[] args) {
try {
// 加载MySQL JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接,假设数据库名为mydb,用户名是root,密码是password
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
System.out.println("成功连接到MySQL数据库");
// 关闭连接
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
2.2 步骤解析
加载驱动: Class.forName(“com.mysql.cj.jdbc.Driver”)用于加载 MySQL 的 JDBC 驱动。在较新的 JDBC 版本中,这一步骤可能不是必需的,但为了兼容性,通常还是会包含这一步。
建立连接: 通过DriverManager.getConnection方法建立连接。连接字符串jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC中,jdbc:mysql://是协议和子协议,localhost:3306是主机地址和端口,mydb是数据库名称,useSSL=false表示不使用 SSL 加密(可根据实际情况设置),serverTimezone=UTC用于设置时区。
三、执行增删改操作(使用 Statement)
3.1 插入数据(Insert)
代码示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertData {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
Statement statement = connection.createStatement();
String sql = "INSERT INTO users (name, age) VALUES ('John', 30)";
int rowsAffected = statement.executeUpdate(sql);
System.out.println("插入成功,影响的行数: " + rowsAffected);
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
步骤解析
通过connection.createStatement()创建一个Statement对象,用于执行 SQL 语句。
executeUpdate方法用于执行插入数据的 SQL 语句,返回值是受影响的行数,在这里插入成功应该返回 1。
3.2 更新数据(Update)
代码示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateData {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
Statement statement = connection.createStatement();
String sql = "UPDATE users SET age = 31 WHERE name = 'John'";
int rowsAffected = statement.executeUpdate(sql);
System.out.println("更新成功,影响的行数: " + rowsAffected);
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
步骤解析
同样使用Statement对象的executeUpdate方法执行更新数据的 SQL 语句,这里是将名为John的用户年龄更新为 31,返回受影响的行数。
3.3 删除数据(Delete)
代码示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DeleteData {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
Statement statement = connection.createStatement();
String sql = "DELETE FROM users WHERE name = 'John'";
int rowsAffected = statement.executeUpdate(sql);
System.out.println("删除成功,影响的行数: " + rowsAffected);
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
步骤解析
使用Statement对象的executeUpdate方法执行删除数据的 SQL 语句,这里是删除名为John的用户记录,返回受影响的行数。
四、执行查询操作(使用 Statement 和 ResultSet)
代码示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class QueryData {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
Statement statement = connection.createStatement();
String sql = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
步骤解析
通过executeQuery方法执行查询语句,返回一个ResultSet对象,用于存储查询结果。
while (resultSet.next())循环遍历ResultSet,next方法用于移动到下一行记录。
使用getInt、getString等方法获取每一行中指定列的数据,这里获取了id、name和age列的数据并打印出来。
五、使用 PreparedStatement(推荐)
5.1 优势
防止 SQL 注入攻击:PreparedStatement 会对输入参数进行预编译,将 SQL 语句的结构和参数分开处理,有效地防止了 SQL 注入攻击。
提高性能:对于多次执行的 SQL 语句,PreparedStatement 只需要编译一次,后续执行时直接使用编译好的语句,提高了执行效率。
5.2 插入数据(Insert)示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertDataWithPreparedStatement {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
String sql = "INSERT INTO users (name, age) VALUES (?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "Alice");
preparedStatement.setInt(2, 25);
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("插入成功,影响的行数: " + rowsAffected);
preparedStatement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
这里的sql语句中的?是参数占位符,通过setString和setInt方法设置参数的值,然后执行executeUpdate方法插入数据。更新和删除操作也可以类似地使用 PreparedStatement。
5.3 查询数据(Query)示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class QueryDataWithPreparedStatement {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection connection = DriverManager.getConnection(url, "root", "password");
String sql = "SELECT * FROM users WHERE name =?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "Alice");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
同样使用参数占位符,设置查询条件,然后执行executeQuery方法获取结果集并进行处理。
结束语
亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。
愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。
至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。
优质源码分享
💞 关注博主 带你实现畅游前后端
🏰 大屏可视化 带你体验酷炫大屏
💯 神秘个人简介 带你体验不一样得介绍
🎀 酷炫邀请函 带你体验高大上得邀请
① 🉑提供云服务部署(有自己的阿里云);
② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
如🈶合作请联系我,期待您的联系。
注:本文撰写于CSDN平台,作者:xcLeigh(所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。
亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌
原文地址:https://blog.csdn.net/weixin_43151418/article/details/144188871(防止抄袭,原文地址不可删除)
原文地址:https://blog.csdn.net/weixin_43151418/article/details/144188871
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!