JDBC常用的接口

一、什么是JDBC

? ?JDBC是Java語言連接數據庫的接口規范。

?

二、JDBC的體系

? 1、Java官方提供一個操作數據庫的抽象接口

? ? 抽象接口有很多的接口和抽象類。

? ?例如:Driver、Connection、Statement。

?

? ?2、各個數據庫廠商提供各自的Java實現類

? ? 需要各自實現具體的細節。

? ? 例如:設計怎么和數據庫服務器通信?如何傳遞SQL語句?如何傳遞執行結果?

?

三、JDBC官方常用接口

? JDBC的接口所在的包是:? java.sql.*

?

?(一)加載驅動實現類

? ? ? ? 主要目的是指定程序當前要和哪一種數據庫通信。

?

? ?1、基礎知識

? ?驅動類的抽象類是:

java.sql.Driver。

? ?MySQL廠商的實現類是:

com.mysql.jdbc.Driver

?

? 2、把含有實現類的jar包放入類路徑

? ? ? ?需要從那些數據庫廠商的官網下載jar文件,放入項目的類路徑下。

? ? ? ? 驅動jar文件名字類似"mysql-connection-java-xxx.jar"。

?

? ?3、加載驅動實現類的方法

? ?第一種:

? ? 調用java.sql.DriverManager類的下列方法

public static void??registerDriver(Driver 驅動對象)

(以MySQL為案例):

// 構建驅動實現類的對象

Driver? temp = new com.mysql.jdbc.Driver();

?

// 注冊到驅動管理器中

DriverManager.registerDriver(temp);

?

?第二種:

? 用類對象的反射加載。

? 調用Class類的下列靜態方法:

public static Class forName("類的包名.類名")

(以MySQL為案例):

// 加載驅動類

Class.forName("com.mysql.jdbc.Driver")

?

?(二)獲得連接對象

? ?Java程序和數據庫通信,需要一個連接對象。

? ?連接對象的類:

java.sql.Connection

? 如何獲得連接對象:

? 1、準備三個信息:

? ?連接的URL地址:描述數據庫在哪臺計算機上。

? ?數據庫賬號名:代表用哪個賬號連接。

? ?賬號的密碼:用密碼來驗證當前程序是不是擁有賬號的所有權。

?

?2、調用DriverManager類的下列方法

public?static Connection getConnection(

? ?String 地址,?

? ?String 賬號,?

? ?String? 密碼

)

? MySQL的案例:

? 假設數據庫路徑是 "jdbc:mysql://127.0.0.1:6666",用戶名是"root",密碼是"123"。

Connection con = DriverManager.getConnection(

? ? ? "jdbc:mysql://127.0.0.1:6666",

? ? ? "root",

? ? ? "123");

?說明:

? ? 數據庫的連接路徑規則是

jdbc:數據庫類型名字:數據庫IP地址或者域名:端口[/默認數據庫]

? ?MySQL數據庫的類型是"mysql"。

? ?后面可以不接默認數據庫。

? ?案例:

// 假設在IP地址是192.168.4.121的計算機上,有一個監聽在3306端口的MySQL服務器,它的連接路徑如下:

?

jdbc:mysql://192.168.4.121:3306

?

?連接對象的其他方法:

// 設置是否開啟自動事務提交

void setAutoCommit(boolean 值)

?

// 設置保存點

Savepoint setSavePoint()

?

// 手動提交事務

void commit()

?

// 回滾事務

void rollback()

?

// 回滾到指定的保存點

void rollback(Savepoint 保存點)

?

? (三)創建語句對象

? ?語句對象是為了執行具體的SQL語句。

? ?1、語句類的路徑:

java.sql.Statement

? 2、如何獲得語句對象:

? 調用Connection類型的對象的下列方法:

public Statement createStatement()

案例:

Statement state = con.createStatement();

?

? 3、主要的方法

? ?1)用于執行一般的SQL語句:

// 執行SQL語句

boolean? execute(String? SQL語句)

? ?返回值:

? ? ? ?true? :? 結果是ResultSet結果集對象。

? ? ? ?false :? 結果是更新的行數,或者沒有結果。

?

? ? 相關方法:

// 如果execute執行返回true,需要下列方法獲取結果集:

ResultSet? getResultSet()

?

// 如果execute執行返回false,需要下列方法獲取更新的記錄行數:

int? getUpdateCount()

?

? 2)用于專門的查詢

? ? ? ?返回一個ResultSet結果集對象,適合select語句。

? 方法如下:

ResultSet? executeQuery(String SQL語句)

? 案例:

// 查詢user數據表的所有記錄

ResultSet? rs =? state.executeQuery("select? *? from user");

?

?3)專門的更新操作

? ? ?返回本次更新的記錄行數,適合insert、update、delete三種語句。

? ? ?方法如下:

int? executeUpdate(String SQL語句)

? 案例:

// 刪除user數據表的id為255的記錄

int count?=? state.executeUpdate("delete? ? from user where id = '255' ");

?

// 打印刪除的記錄行數

System.out.println("本次執行刪除記錄個數:"? + count);

?

?(四)處理結果集

? ? ? ?結果集是把查詢的記錄放到一個列表集合里,從上到下依次獲取。

? ?結果集類:

java.sql.ResultSet

? ?主要方法:

? ?1、跳轉行記錄

? 行號從1開始編號。

// 跳轉到指定的行,成功返回true

boolean? absolute(int? 行號)

?

// 跳轉到第一行,成功返回true

boolean first()

?

// 跳轉到最后一行,成功返回true

boolean last()

?

// 跳轉到前一行,成功返回true

boolean previous()

?

// 跳轉到下一行,成功返回true

boolean next()

?

?2、獲得一行的字段值

? ? ? ?JDBC為每種類型都提供了對應的get方法,方便匹配字段值的類型。

? ?例如: getInt() getFloat() getDouble() getLong() getSring() getTime() getDate()。

?

? 第一種:用字段名獲取

? ?以獲取String類型為例:

String? getString(String? 字段名)

? 獲取字段名是id的值:

String value = rs.getString("id");

?

?第二種:用字段值所在的列號獲取

? 列是從1開始編號。

? 1代表第一列,2代表第二列。

?以獲取String類型為例:

String? getString(int 列號)

?獲取第2列的值:

String value = rs.getString(2);

?

3、實際的處理邏輯

// 獲取結果集對象

ResultSet rs = state.executeUpdate("SQL語句");

?

// 循環處理,有下一行就繼續循環

while(rs.next()){

? ? // 用get方法獲得當前行的字段

}

?

// 關閉結果集

rs.close();

?

四、注意事項

? 1、連接用完后及時調用close()方法關閉。

? 2、結果集獲取字段值的方法要和返回的類型匹配。

? 3、賬號權限設計合理,不能獲取最高權限。

?

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

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

相關文章

容器適配器-stack棧

C標準庫不只是包含了順序容器,還包含一些為滿足特殊需求而設計的容器,它們提供簡單的接口。 這些容器可被歸類為容器適配器(container adapter),它們是改造別的標準順序容器,使之滿足特殊需求的新容器。 適配器:也稱配置器,把一…

[250403] HuggingFace 新增檢查模型與電腦兼容性的功能 | Firefox 發布137.0 支持標簽組

目錄 Hugging Face 讓尋找兼容的 AI 模型變得更容易Firefox 137 版本更新摘要 Hugging Face 讓尋找兼容的 AI 模型變得更容易 Hugging Face 是一個流行的在線平臺,用于訪問開源人工智能 (AI) 工具和模型。該平臺推出了一項有用的新功能,允許個人輕松檢查…

.NET 創建MCP使用大模型對話二:調用遠程MCP服務

在上一篇文章.NET 創建MCP使用大模型對話-CSDN博客中,我們簡述了如何使用mcp client使用StdIo模式調用本地mcp server。本次實例將會展示如何使用mcp client模式調用遠程mcp server。 一:創建mcp server 我們創建一個天氣服務。 新建WebApi項目&#x…

Redis 中 Set(例如標簽) 和 ZSet(例如排行榜) 的詳細對比,涵蓋定義、特性、命令、適用場景及總結表格

以下是 Redis 中 Set 和 ZSet 的詳細對比,涵蓋定義、特性、命令、適用場景及總結表格: 1. 核心定義 數據類型SetZSet(Sorted Set)定義無序的、唯一的字符串集合,元素不重復。有序的、唯一的字符串集合,每個…

解決Spring參數解析異常:Name for argument of type XXX not specified

前言 在開發 Spring Boot 應用時,我們常遇到類似 java.lang.IllegalArgumentException: Name for argument not specified 的報錯。這類問題通常與方法參數名稱的解析機制相關,尤其在使用 RequestParam、PathVariable 等注解時更為常見。 一、問題現象與…

剛剛,OpenAI開源PaperBench,重塑頂級AI Agent評測

今天凌晨1點,OpenAI開源了一個全新的AI Agent評測基準——PaperBench。 這個基準主要考核智能體的搜索、整合、執行等能力,需要對2024年國際機器學習大會上頂尖論文的復現,包括對論文內容的理解、代碼編寫以及實驗執行等方面的能力。 根據O…

Golang封裝Consul 服務發現庫

以下是一個經過生產驗證的 Consul 服務發現封裝庫,支持注冊/注銷、健康檢查、智能發現等核心功能,可直接集成到項目中: package consulimport ("context""fmt""log""math/rand""net""os""sync"&quo…

自適應信號處理任務(過濾,預測,重建,分類)

自適應濾波 # signals creation: u, v, d N = 5000 n = 10 u = np.sin(np.arange(0, N/10., N/50000

PyTorch深度學習框架 的基礎知識

目錄 1.pyTorch檢查是否安裝成功 2.PyTorch的張量tensor 基礎創建方式(三種) 2.2用列表創建tensor 2.2使用元組創建 tensor 2.3使用ndarray創建創建 tensor 2.4 快速創建tensor的常用方法 3.pyTorch中的張量tensor的常用屬性 4. tensor中的基礎數據…

MySQL學習集--DDL

DDL 數據庫操作 查詢所有數據庫 SHOW DATABASES;查詢當前數據庫 SELECT DATABASE();創建 CREATE DATABASE[IF NOT EXISTS]數據庫名[DEFAULT CHARSET 字符集][COLLATE 排序規則];刪除 DROR DATABASE[IF EXISTS]數據庫名;使用 USE 數據庫名;表操作 創建表格 CREATE TABL…

Vue 3 中按照某個字段將數組分成多個數組

方法一:使用 reduce 方法 const originalArray [{ id: 1, category: A, name: Item 1 },{ id: 2, category: B, name: Item 2 },{ id: 3, category: A, name: Item 3 },{ id: 4, category: C, name: Item 4 },{ id: 5, category: B, name: Item 5 }, ];const grou…

LeetCode刷題 -- 48. 旋轉圖像

題目 算法題解:順時針旋轉矩陣(90度) 1. 算法描述 給定一個 n n 的二維矩陣,請將矩陣順時針旋轉 90 度。 例如: 輸入: [[1,2,3],[4,5,6],[7,8,9] ]輸出: [[7,4,1],[8,5,2],[9,6,3] ]2. 思…

Vulkan進階系列1 - Vulkan應用程序結構(完整代碼)

一: 概述 在前面的20多篇文章中,我們了解了Vulkan的基礎知識,和相關API的使用,接下來我們要從零開始寫一套完整Vulkan應用程序,在這個過程中加深對Vulkan中的各種概念的理解。 Vulkan 應用程序一般遵循 初始化 -> 運行循環 -> 資源清理 的結構,本實例也基本遵循了…

VTK的兩種顯示刷新方式

在類中先聲明vtk的顯示對象 vtkRenderer out_render; vtkVertexGlyphFilter glyphFilter; vtkPolyDataMapper mapper; // 新建制圖器 vtkActor actor; // 新建角色 然后在init中先初始化一下: out_rend…

【CSS3】04-標準流 + 浮動 + flex布局

本文介紹浮動與flex布局。 目錄 1. 標準流 2. 浮動 2.1 基本使用 特點 脫標 2.2 清除浮動 2.2.1 額外標簽法 2.2.2 單偽元素法 2.2.3 雙偽元素法(推薦) 2.2.4 overflow(最簡單) 3. flex布局 3.1 組成 3.2 主軸與側軸對齊方式 3.2.1 主軸 3.2.2 側軸 3.3 修改主…

詳細介紹一下C++的按位運算

在C中,按位運算(Bitwise Operations) 是直接對二進制位(bit)進行操作的低級運算,常用于處理硬件、優化性能、加密算法或底層資源管理。以下是按位運算符的詳細說明、示例和典型應用場景: 1.按位…

Flask與 FastAPI 對比:哪個更適合你的 Web 開發?

在開發 Web 應用時,Python 中有許多流行的 Web 框架可以選擇,其中 Flask 和 FastAPI 是兩款廣受歡迎的框架。它們各有特色,適用于不同的應用場景。本文將從多個角度對比這兩個框架,幫助你更好地選擇適合的框架來構建你的 Web 應用…

Python爬蟲第一戰(爬取優美圖庫網頁圖片)

本文是我在學習過程中記錄學習的點點滴滴,目的是為了學完之后鞏固一下順便也和大家分享一下,日后忘記了也可以方便快速的復習。 爬取網頁圖片 前言前言 今天學習的主要是關于如何利用Python爬取網頁圖片知識的理解和應用 # 1.獲取網頁信息,交給beautifulsoup # 2.獲取頁面里…

J1 ResNet-50算法實戰與解析

🍨 本文為🔗365天深度學習訓練營 中的學習紀錄博客🍖 原作者:K同學啊 | 接輔導、項目定制 一、理論知識儲備 1. 殘差網絡的由來 ResNet主要解決了CNN在深度加深時的退化問題(梯度消失與梯度爆炸)。 雖然B…