Java連接MySQL數(shù)據(jù)庫并實(shí)現(xiàn)數(shù)據(jù)交互功能
一、環(huán)境準(zhǔn)備
1.1 安裝 MySQL
首先,確保你已經(jīng)安裝了 MySQL 數(shù)據(jù)庫。可以通過 MySQL 官網(wǎng) 下載并安裝適合你操作系統(tǒng)的版本。
1.2 創(chuàng)建數(shù)據(jù)庫和表
在安裝完成后,登錄 MySQL 命令行工具,創(chuàng)建一個(gè)名為 test_db 的數(shù)據(jù)庫,并在其中創(chuàng)建一個(gè)名為 users 的表:
CREATE DATABASE test_db; USE test_db; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL );
1.3 添加 MySQL Connector/J 依賴
在 Java 項(xiàng)目中,你需要添加 MySQL Connector/J 作為依賴。如果你使用 Maven,可以在 pom.xml
中添加如下依賴:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.32</version> <!-- 請根據(jù)最新版本更新 --> </dependency>
二、Java 代碼實(shí)現(xiàn)
2.1 創(chuàng)建數(shù)據(jù)庫連接
接下來,在 Java 代碼中實(shí)現(xiàn)與 MySQL 數(shù)據(jù)庫的連接。以下是一個(gè)簡單的連接示例:
package com.example.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLConnection { private static final String URL = "jdbc:mysql://localhost:3306/test_db"; // 數(shù)據(jù)庫地址 private static final String USER = "root"; // 數(shù)據(jù)庫用戶名 private static final String PASSWORD = "your_password"; // 數(shù)據(jù)庫密碼 public static Connection getConnection() { Connection connection = null; try { // 加載 JDBC 驅(qū)動 Class.forName("com.mysql.cj.jdbc.Driver"); // 獲取數(shù)據(jù)庫連接 connection = DriverManager.getConnection(URL, USER, PASSWORD); System.out.println("數(shù)據(jù)庫連接成功!"); } catch (ClassNotFoundException e) { System.out.println("找不到 JDBC 驅(qū)動!" + e.getMessage()); } catch (SQLException e) { System.out.println("數(shù)據(jù)庫連接失敗!" + e.getMessage()); } return connection; } }
2.2 插入數(shù)據(jù)
接下來,我們編寫一個(gè)方法來插入用戶數(shù)據(jù)到 users
表中:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class UserDAO { public void addUser(String username, String password) { String sql = "INSERT INTO users (username, password) VALUES (?, ?)"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, username); preparedStatement.setString(2, password); int rowsAffected = preparedStatement.executeUpdate(); System.out.println("成功插入 " + rowsAffected + " 行數(shù)據(jù)。"); } catch (SQLException e) { System.out.println("插入數(shù)據(jù)失??!" + e.getMessage()); } } }
2.3 查詢數(shù)據(jù)
下面是一個(gè)查詢用戶數(shù)據(jù)的方法:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class UserDAO { // 其他代碼... public void getAllUsers() { String sql = "SELECT * FROM users"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery()) { while (resultSet.next()) { int id = resultSet.getInt("id"); String username = resultSet.getString("username"); String password = resultSet.getString("password"); System.out.println("用戶ID: " + id + ", 用戶名: " + username + ", 密碼: " + password); } } catch (SQLException e) { System.out.println("查詢數(shù)據(jù)失?。? + e.getMessage()); } } }
2.4 更新數(shù)據(jù)
更新用戶信息的方法如下:
public class UserDAO { // 其他代碼... public void updateUserPassword(int id, String newPassword) { String sql = "UPDATE users SET password = ? WHERE id = ?"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, newPassword); preparedStatement.setInt(2, id); int rowsAffected = preparedStatement.executeUpdate(); System.out.println("成功更新 " + rowsAffected + " 行數(shù)據(jù)。"); } catch (SQLException e) { System.out.println("更新數(shù)據(jù)失?。? + e.getMessage()); } } }
2.5 刪除數(shù)據(jù)
刪除用戶數(shù)據(jù)的方法如下:
public class UserDAO { // 其他代碼... public void deleteUser(int id) { String sql = "DELETE FROM users WHERE id = ?"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setInt(1, id); int rowsAffected = preparedStatement.executeUpdate(); System.out.println("成功刪除 " + rowsAffected + " 行數(shù)據(jù)。"); } catch (SQLException e) { System.out.println("刪除數(shù)據(jù)失?。? + e.getMessage()); } } }
三、測試代碼
在主程序中測試上述功能,創(chuàng)建 Main
類并添加如下代碼:
public class Main { public static void main(String[] args) { UserDAO userDAO = new UserDAO(); // 插入用戶 userDAO.addUser("john_doe", "password123"); // 查詢用戶 userDAO.getAllUsers(); // 更新用戶密碼 userDAO.updateUserPassword(1, "new_password"); // 查詢用戶 userDAO.getAllUsers(); // 刪除用戶 userDAO.deleteUser(1); // 查詢用戶 userDAO.getAllUsers(); } }
四、總結(jié)
通過本文的介紹,你已經(jīng)學(xué)會了如何在 Java 中連接 MySQL 數(shù)據(jù)庫并實(shí)現(xiàn)數(shù)據(jù)交互。主要內(nèi)容包括:
- 數(shù)據(jù)庫連接:使用 JDBC 連接 MySQL 數(shù)據(jù)庫。
- 數(shù)據(jù)操作:實(shí)現(xiàn)插入、查詢、更新和刪除(CRUD)操作。
- 最佳實(shí)踐:使用 PreparedStatement 避免 SQL 注入。
在實(shí)際應(yīng)用中,建議使用連接池(如 HikariCP 或 DBCP)來提高性能和資源利用率。同時(shí),可以考慮使用 ORM 框架(如 Hibernate 或 MyBatis)來簡化數(shù)據(jù)庫操作,提高開發(fā)效率。希望本文能幫助你快速上手 Java 與 MySQL 的數(shù)據(jù)交互!
以上就是Java連接MySQL數(shù)據(jù)庫并實(shí)現(xiàn)數(shù)據(jù)交互功能的詳細(xì)內(nèi)容,更多關(guān)于Java連接MySQL數(shù)據(jù)交互的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java 數(shù)組復(fù)制clone方法實(shí)現(xiàn)詳解
這篇文章主要介紹了Java 數(shù)組復(fù)制clone方法實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11SpringDataJpa的使用之一對一、一對多、多對多?關(guān)系映射問題
這篇文章主要介紹了SpringDataJpa的使用?--?一對一、一對多、多對多關(guān)系映射,本文主要講述?@OneToOne、@OneToMany、@ManyToOne、@ManyToMany?這四個(gè)關(guān)系映射注解的使用,以及其對應(yīng)的級聯(lián)關(guān)系,需要的朋友可以參考下2022-07-07Java分布式鎖、分布式ID和分布式事務(wù)的實(shí)現(xiàn)方案
在分布式系統(tǒng)中,分布式鎖、分布式ID和分布式事務(wù)是常用的組件,用于解決并發(fā)控制、唯一標(biāo)識和數(shù)據(jù)一致性的問題,本文將介紹Java中常用的分布式鎖、分布式ID和分布式事務(wù)的實(shí)現(xiàn)方案,并通過具體的示例代碼演示它們的用法和應(yīng)用場景2023-06-06JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲
這篇文章主要為大家詳細(xì)介紹了JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12淺析fastjson2時(shí)間序列化和反序列化的簡單使用
在項(xiàng)目中將fastjson升級為fastjson2后,我們遇到了一些與fastjson不完全兼容的問題,所以本文就來探討下fastjson2的時(shí)間序列化和反序列化的簡單使用吧2025-01-01java實(shí)現(xiàn)同步的幾種方式(示例詳解)
這篇文章主要介紹了java實(shí)現(xiàn)同步的幾種方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12

Java中LocalCache本地緩存實(shí)現(xiàn)代碼

Java代碼如何判斷l(xiāng)inux系統(tǒng)windows系統(tǒng)