用於訪問資料庫的 JDBC 規範和介面

Mondo 科技 更新 2024-01-30

JDBC 是 J**A Database Connectivity 的縮寫,它定義了一組用於訪問資料庫的規範和介面。 但它不參與資料庫訪問本身的實現。 因此,對於現有的資料庫(例如,MySQL、Oracle),要麼資料庫製造商自己提供這些規範和介面的實現,要麼社群提供這些實現。

對於MySQL資料庫,我們通常使用以下包來訪問資料庫:

mysql mysql-connector-j**a 5.1.39
JDBC 的類包含在 J**A 中SQL 和 J**AXsql。順便說一句,J**AX 是 Sun 提供的擴充套件包,它提供了對原始 J**A 包的一些擴充套件處理,隨著時間的推移,J**AX 在許多程序中都成為了 J**A 核心架構的一部分,比如 J**AX 的 Swing 包。 在對資料庫進行操作時,我們需要先獲取連線,如下所示:

connection conn = drivermanager.getconnection("jdbc:somejdbcvendor:other data needed by some jdbc vendor", "mylogin", "mypassword");

try catch (throwable t)

對於MySQL資料庫,獲取連線格式如下:

connection conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/test", "mylogin", "mypassword");
DriverManager是JDBC提供的驅動管理類,負責根據引數中的連線URL尋找合適的驅動。 查詢用於連線(例如“jdbc:mysql:”)的MySQL驅動程式和用於連線(例如“jdbc:oracle:”)的Oracle驅動程式。 drivermanager.getconnection的核心邏輯如下:

for(driverinfo adriver : registereddrivers) 

catch (sqlexception ex)

否則 如果沒有合適的驅動程式,則會引發異常。

if (reason != null) catch (sqlexception e)

construct a new driver and register it with drivermanager

throws sqlexception

if a database error occurs.

public driver() throws sqlexception

通過 DriverManagergetconnection 獲取連線後,我們建立並執行語句來新增、刪除、修改和檢查資料庫。 JDBC 有三種型別的語句:

讓我們看一下為 mysql-connect-j**a 包建立 preparedstatement 的過程。 當我們呼叫 conn 時preparestatement()方法,其核心邏輯如下:

public j**a.sql.preparedstatement preparestatement(string sql, int resultsettype, int resultsetconcurrency) throws sqlexception 

if (this.useserverpreparedstmts &&canserverprepare)

如果在本地快取中找不到相應的 PreparedStatement,請建立新的 PreparedStatement

if (pstmt == null)

pstmt.setresultsettype(resultsettype);

pstmt.setresultsetconcurrency(resultsetconcurrency);

catch (sqlexception sqlex)

else else catch (sqlexception sqlex) else

else return pstmt;

以上**已註解,希望能幫助大家理解。 如你所見,如果啟用了本地快取,則首先在本地快取中找到 SQL 對應的預處理 PreparedStatement,如果找到,則重用此 PreparedStatement。

語句(包括 preparedstatement)使用完畢後,需要呼叫 close 方法。 對於 PreparedStatement,如果它由資料庫進行預處理並啟用了本地快取,則會在 close 方法中將其寫入快取,以便可以在此連線的後續 SQL 執行中重用相同的預處理。

public void close() throws sqlexception 

realclose(true, true);

使用JDBC的連線和語句訪問MySQL資料庫的完整示例如下:

import j**a.sql.connection;

import j**a.sql.drivermanager;

import j**a.sql.statement;

public class mysqltest {

public static void main(string args) {

connection conn = null;

statement stmt = null;

try {conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/test", "mylogin", "mypassword");

stmt = conn.createstatement();

string sql = "insert into test values ('dengshenyu','j**a')";

stmt.executeupdate(sql);

catch (exception ex) {

ex.printstacktrace();

finally {

try {if (stmt != null)

stmt.close();

if (conn != null)

conn.close();

catch (exception e) {

e.printstacktrace();

相關問題答案

    對資料庫連線工件JDBC的組成和工作原理進行了全面分析!

    在這裡雲源想要它對你的幫助容易學習 IT 嗨,你今天過得怎麼樣?這個世界上一定有另乙個我。做我不敢做的事。過我想過的生活。JDBC J A Database Connectivity 是乙個用於執行 SQL 語句的 J A API,它是 J A 和資料庫之間的橋梁,是乙個規範而不是乙個實現,可以交給...

    資料安全知識 不同型別的資料庫

    有許多不同的資料庫型別可用,每種型別都有優點和缺點。每種資料庫型別都建立乙個特定的環境來儲存資料和資訊之間的關係。關聯式資料庫以類似表的行和列結構儲存資料,重點關注資料一致性。此資料庫型別側重於資料之間的關係,是使用最廣泛的資料庫型別。物件導向資料庫將物件導向程式設計 OOP 原則與關聯式資料庫標準...

    SCI資料庫是評價科研成果和學術影響力的重要依據

    在科學研究領域,SCI Science Citation Index 作為重要指標起著極其關鍵的作用。SCI是由美國科學資訊研究所建立的引文索引資料庫,收集來自世界各地的學術期刊文章,為科學家評估科研成果和學術影響力提供依據。SCI的代表性體現在其評價體系和學科影響力上。首先,SCI代表科研成果評價...

    螞蟻資料庫致力於降本增效

    背景 專案背景 某省級高速中心的清算結算系統一直無法解決資料庫設計 選型等相關問題。在某省級高速工程建設過程中,資料庫建設方案一直是難點。該項目的建設面臨來自兩方面的壓力 時間短 任務重 在政策方面,某省交通科學研究院責令某省級高速公路盡快實現網路通行費計費 車道資料及現有清匯系統的設計,並做好整改...

    螞蟻資料庫致力於降本增效,一省高速清算結算的實踐意義重大

    中國正處於數位化轉型的關鍵時期,高速公路正朝著智慧高速公路的建設邁進。無論是傳統的高速卡口,如 資料採集 資料上傳 和 資料處理 基礎設施時代,或近期將實現具有 車輛協同智慧型化 邊緣控制中心 和 智慧型高速雲控中心 等特點的智慧高速公路建設 在時代,海量資料儲存 複雜計算 互動能力將成為關鍵,而這...