java-mysql-insert 操作

在 Java 中,使用 JDBC 插入數據到 MySQL 數據庫是非常常見的操作。以下是一個詳細的步驟,展示如何使用 JDBC 插入數據到 MySQL 數據庫。

### 一、準備工作

#### 1. 下載并安裝 MySQL

如果您還沒有安裝 MySQL,可以從 MySQL 官方網站下載并安裝:
- [MySQL 下載頁面](https://dev.mysql.com/downloads/mysql/)

#### 2. 創建數據庫和表

在 MySQL 中創建一個數據庫和表,用于存儲插入的數據。例如,創建一個名為 `testdb` 的數據庫和一個名為 `users` 的表:

```sql
CREATE DATABASE testdb;

USE testdb;

CREATE TABLE users (
? ? id INT AUTO_INCREMENT PRIMARY KEY,
? ? name VARCHAR(100) NOT NULL,
? ? email VARCHAR(100) NOT NULL
);
```

### 二、添加 MySQL JDBC 驅動

從 MySQL 官方網站下載 MySQL JDBC 驅動(Connector/J):
- [MySQL Connector/J 下載頁面](https://dev.mysql.com/downloads/connector/j/)

將下載的 JDBC 驅動添加到您的項目中。如果您使用的是 Maven,可以在 `pom.xml` 文件中添加以下依賴:

```xml
<dependency>
? ? <groupId>mysql</groupId>
? ? <artifactId>mysql-connector-java</artifactId>
? ? <version>8.0.26</version>
</dependency>
```

### 三、編寫 Java 代碼

以下是一個完整的 Java 示例,展示如何使用 JDBC 插入數據到 MySQL 數據庫:

```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCInsertExample {
? ? private static final String JDBC_URL = "jdbc:mysql://localhost:3306/testdb";
? ? private static final String JDBC_USER = "root";
? ? private static final String JDBC_PASSWORD = "yourpassword";

? ? public static void main(String[] args) {
? ? ? ? // 插入的用戶數據
? ? ? ? String name = "John Doe";
? ? ? ? String email = "john.doe@example.com";

? ? ? ? try {
? ? ? ? ? ? // 加載 MySQL JDBC 驅動
? ? ? ? ? ? Class.forName("com.mysql.cj.jdbc.Driver");

? ? ? ? ? ? // 建立數據庫連接
? ? ? ? ? ? Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);

? ? ? ? ? ? // 插入數據
? ? ? ? ? ? String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";
? ? ? ? ? ? try (PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
? ? ? ? ? ? ? ? preparedStatement.setString(1, name);
? ? ? ? ? ? ? ? preparedStatement.setString(2, email);
? ? ? ? ? ? ? ? int rowsInserted = preparedStatement.executeUpdate();
? ? ? ? ? ? ? ? if (rowsInserted > 0) {
? ? ? ? ? ? ? ? ? ? System.out.println("A new user was inserted successfully!");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }

? ? ? ? ? ? // 關閉數據庫連接
? ? ? ? ? ? connection.close();
? ? ? ? } catch (ClassNotFoundException | SQLException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
```

### 代碼解釋

1. **加載 MySQL JDBC 驅動**:
? ?```java
? ?Class.forName("com.mysql.cj.jdbc.Driver");
? ?```
? ?這行代碼加載 MySQL JDBC 驅動,使得 `DriverManager` 可以找到并使用該驅動。

2. **建立數據庫連接**:
? ?```java
? ?Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
? ?```
? ?使用 `DriverManager.getConnection` 方法建立到 MySQL 數據庫的連接。

3. **插入數據**:
? ?```java
? ?String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";
? ?try (PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
? ? ? ?preparedStatement.setString(1, name);
? ? ? ?preparedStatement.setString(2, email);
? ? ? ?int rowsInserted = preparedStatement.executeUpdate();
? ? ? ?if (rowsInserted > 0) {
? ? ? ? ? ?System.out.println("A new user was inserted successfully!");
? ? ? ?}
? ?}
? ?```
? ?使用 `PreparedStatement` 預編譯 SQL 語句,并通過 `setString` 方法設置參數值。執行 `executeUpdate` 方法執行插入操作,并返回受影響的行數。

4. **關閉數據庫連接**:
? ?```java
? ?connection.close();
? ?```
? ?插入數據后,關閉數據庫連接以釋放資源。

### 總結

通過上述步驟和示例代碼,您可以在 Java 中使用 JDBC 插入數據到 MySQL 數據庫。JDBC 提供了一套標準的 API,使得 Java 應用程序可以方便地與關系型數據庫進行交互。希望這些示例對您有所幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44914.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UART編程

Q:為什么使用串口前要先在電腦上安裝CH340驅動&#xff1f; 中斷的作用&#xff1f; 環形buffer的作用&#xff1f; static和valitate的作用 三種編程方式簡介 也可以通過DMA方式減小CPU資源的消耗 直接把數據在SRAM內存和UART模塊進行傳輸 &#xff0c;流程&#xff1a; …

玩家自行定制內存將古老的386 PC內存升級到64MB容量

比爾蓋茨曾說&#xff1a;“無論對誰來說&#xff0c;640K內存都足夠了。” 如果你是一個還停留在 30 針 SIMM 時代的老式電腦愛好者&#xff0c;那么你的內存升級選擇是相當有限的。不過&#xff0c;YouTube 上的一個頻道已經展示了如何將古老的 386 系統內存升級到令人"…

【AI應用探討】—對抗學習(AL)應用場景

目錄 一、圖像領域 二、自然語言處理&#xff08;NLP&#xff09; 三、安全領域 四、其他領域 五、醫療健康領域 六、游戲與娛樂領域 七、機器人與自動化領域 八、科研與教育領域 九、物聯網與邊緣計算 十、金融科技 十一、能源與環境 十二、社會科學與人文研究 十…

Linux內核編譯安裝 - Deepin,Debian系

為什么要自己編譯內核 優點 定制化&#xff1a;你可以根據自己的硬件和需求配置內核&#xff0c;去掉不必要的模塊&#xff0c;優化性能。性能優化&#xff1a;移除不需要的驅動程序和特性&#xff0c;減小內核體積&#xff0c;提高系統性能。最新特性和修復&#xff1a;獲取…

什么是開放最短路徑優先(OSPF)

OSPF是一種典型的鏈路狀態路由協議&#xff0c;一般在同一個路由域中使用。這里的路由域指的是一個自治系統&#xff08;AS&#xff09;&#xff0c;是指一組通過統一的路由策略或協議相互交換路由信息的網絡。在這個自治系統&#xff08;AS&#xff09;中&#xff0c;所有的OS…

【Leetcode】最小數字游戲

你有一個下標從 0 開始、長度為 偶數 的整數數組 nums &#xff0c;同時還有一個空數組 arr 。Alice 和 Bob 決定玩一個游戲&#xff0c;游戲中每一輪 Alice 和 Bob 都會各自執行一次操作。游戲規則如下&#xff1a; 每一輪&#xff0c;Alice 先從 nums 中移除一個 最小 元素&…

等保測評是做什么的

等保測評的定義和目的 等保測評&#xff0c;全稱為信息安全等級保護測評&#xff0c;是依據國家信息安全等級保護規范規定&#xff0c;由具有資質的測評機構對信息系統安全等級保護狀況進行檢測評估的活動。等保測評的目的是驗證網絡系統或應用是否滿足相應的安全保護等級要求…

【Linux】System V消息隊列 System V信號量

&#x1f466;個人主頁&#xff1a;Weraphael ?&#x1f3fb;作者簡介&#xff1a;目前正在學習c和算法 ??專欄&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起進步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指點一二 如果文章對…

前端 JS 經典:小數運算不精確

原因&#xff1a;計算機對小數的存儲是二進制的&#xff0c;有限位數的二進制做算法得到的是有限位數&#xff0c;無限位數的二進制做運算&#xff0c;得到的是無限位數。 如下&#xff1a;0.5 和 0.25 轉二進制是有限位數&#xff0c;0.3 和 0.2 轉二進制是無限位數。 (0.5)…

Spark調度底層執行原理詳解(第35天)

系列文章目錄 一、Spark應用程序啟動與資源申請 二、DAG&#xff08;有向無環圖&#xff09;的構建與劃分 三、Task的生成與調度 四、Task的執行與結果返回 五、監控與容錯 六、優化策略 文章目錄 系列文章目錄前言一、Spark應用程序啟動與資源申請1. SparkContext的創建2. 資…

力扣1111.有效括號的嵌套深度

力扣1111.有效括號的嵌套深度 棧模擬 對于每個括號求出深度 奇數深度存入A&#xff0c;偶數深度存入B這樣最大程度降低最大深度 class Solution {public:vector<int> maxDepthAfterSplit(string s) {//因為棧中只會存(的數量 所有用一個變量即可int d 0;vector<i…

Python | Leetcode Python題解之第233題數字1的個數

題目&#xff1a; 題解&#xff1a; class Solution:def countDigitOne(self, n: int) -> int:# mulk 表示 10^k# 在下面的代碼中&#xff0c;可以發現 k 并沒有被直接使用到&#xff08;都是使用 10^k&#xff09;# 但為了讓代碼看起來更加直觀&#xff0c;這里保留了 kk,…

C語言內存管理深度解析面試題及參考答案(2萬字長文)

在嵌入式面試時,C語言內存管理是必問面試題,也是難點,相關知識點可以參考: C語言內存管理深度解析??????? 下面整理了各種類型的C語言內存管理的面試題: 目錄 全局變量和局部變量在內存中分別存儲在哪個區域? 靜態變量和全局變量有什么區別? 什么是作用域?…

ORM Bee,如何使用Oracle的TO_DATE函數?

ORM Bee,如何使用Oracle的TO_DATE函數? 在Bee V2.4.0,可以這樣使用: LocaldatetimeTable selectBeannew LocaldatetimeTable();Condition conditionBF.getCondition();condition.op("localdatetime", Op.ge, new TO_DATE("2024-07-08", "YYYY-MM-DD&…

如何選擇適合的分布式鎖技術

1. Redis鎖 優勢&#xff1a; 性能高&#xff1a;Redis作為內存數據庫&#xff0c;讀寫速度非常快&#xff0c;因此Redis鎖在性能上表現優異。 實現方便&#xff1a;Redis提供了豐富的命令集&#xff0c;可以方便地實現分布式鎖的邏輯。 劣勢&#xff1a; 可靠性&#xff1a…

Excel第31享:基于left函數的截取式數據裂變

1、需求描述 如下圖所示&#xff0c;在“Excel第30享”中統計2022年YTD各個人員的“上班工時&#xff08;a2&#xff09;”&#xff0c;需要基于工時明細表里的“日期”字段建立輔助列&#xff0c;生成“年份”字段&#xff0c;本文說明“年份”字段是怎么裂變而來的。 下圖為…

systemverilog的關聯數組

關聯數組定義 在 SystemVerilog 中&#xff0c;關聯數組&#xff08;Associative Arrays&#xff09;是一種非常靈活的數據結構&#xff0c;它可以使用任意類型的鍵&#xff08;key&#xff09;來索引數組中的元素。這使得關聯數組特別適合于實現類似哈希表&#xff08;hash t…

圖像處理:使用 OpenCV-Python 卡通化你的圖像(2)

一、說明 在圖像處理領域&#xff0c;將圖像卡通化是一種新趨勢。人們使用不同的應用程序將他們的圖像轉換為卡通圖像。如今&#xff0c;玩弄圖像是許多人的愛好。人們通常會點擊圖片并添加濾鏡或使用不同的東西自定義圖像并將其發布到社交媒體上。但我們是程序員&#xff0c;…

后端老鳥的前端初探:心得與領悟20240713

&#x1f389; 后端老鳥的前端初探&#xff1a;心得與領悟 &#x1f680; 作為一名深耕后端多年的開發者&#xff0c;我最近踏上了前端探索的征程。這段跨界之旅讓我有了許多深刻的心得與領悟&#xff0c;現在我想和大家細細分享&#xff1a; 前端技術的飛速更新 &#x1f68…

godis源碼分析——Redis協議解析器

前言 redis這個目錄下的所有代碼就是為了一個事情&#xff0c;就是適配redis。 流程 redis下的基本流程 源碼 在redis/client/client.go 主要是客戶端處理 package clientconst (created iotarunningclosed )type B struct {data chan stringticker *time.Ticker }// …