双表查询java代码_什么是JDBC?Java数据库连接性简介
JDBC(Java數據庫連接性)是Java API,用于管理與數據庫的連接,發出查詢和命令以及處理從數據庫獲得的結果集。JDBC在1997年作為JDK 1.1的一部分發布,是為Java持久層開發的首批組件之一。
本文提供了JDBC的概述,然后是使用JDBC API將Java客戶端與輕量級關系數據庫SQLite連接的動手入門。
JDBC如何工作
JDBC作為基于C的ODBC(開放數據庫連接)API的替代產品而開發,提供了編程級別的接口,該接口處理Java應用程序與數據庫或RDBMS通信的機制。JDBC接口包括兩層:
1. JDBC API支持Java應用程序與JDBC管理器之間的通信。
2. JDBC驅動程序支持JDBC管理器和數據庫驅動程序之間的通信。
JDBC是您的應用程序代碼與之交互的通用API。下面是您正在使用的數據庫的JDBC兼容驅動程序。
圖1是Java持久層中JDBC的體系結構概述。
使用JDBC連接數據庫
Java生態系統中編程的幸運事實之一是,您可能會為所選的任何數據庫找到穩定的JDBC數據庫連接器。在本教程中,我們將使用SQLite來了解JDBC,主要是因為它非常易于使用。
使用JDBC連接數據庫的步驟如下:
1. 安裝或找到您要訪問的數據庫。
2. 包括JDBC庫。
3. 確保所需的JDBC驅動程序在類路徑中。
4. 使用JDBC庫獲得與數據庫的連接。
5. 使用該連接來發出SQL命令。
6. 完成后關閉連接。
我們將一起完成這些步驟。
查找JDBC驅動程序
要查找您要使用的數據庫的驅動程序,只需對數據庫和JDBC進行網絡搜索。例如,輸入“ mysql jdbc driver”將打開MySQL驅動程序。我挑戰您尋找沒有JDBC驅動程序的Java兼容數據庫!
步驟1.下載并安裝SQLite
SQLite是一個非常緊湊的數據庫。它不是供生產使用的,但是快速嘗試問題的絕佳選擇。SQLite使用文件作為其功能數據庫,而無需安裝任何服務或守護程序。
要開始進行此演示,請繼續下載SQLite示例數據庫。解壓縮.db文件并將其保存在您不會忘記的地方。
該文件包含一個基于功能文件的數據庫以及我們可以使用的示例架構和數據。
SQL和JDBC
在過去的十年中,NoSQL變得越來越流行,但是關系數據庫仍然是使用中最常見的數據存儲類型。一個關系型數據庫是由列和行的表的結構化存儲庫。SQL(結構化查詢語言)是數據架構師用于在關系數據庫中創建,讀取,更新和刪除新記錄之類的語言。JDBC是從Java到SQL 的適配器層:它為Java開發人員提供了一個公共接口,用于連接數據庫,發出查詢和命令以及管理響應。
步驟2.將JDBC導入Java應用程序
我們可以在IDE中進行編碼,但是直接在文本編輯器中進行編碼將更好地展示JDBC的簡單性。首先,您需要為您的操作系統安裝兼容的JDK。
假設您已安裝Java平臺開發人員工具,我們可以從創建一個簡單的Java程序開始。在您的文本編輯器中,粘貼清單1中所示的代碼。調用此文件WhatIsJdbc.java。
清單1.一個簡單的Java程序
class WhatIsJdbc{
public static void main(String args[]){
System.out.println("Hello JavaWorld");
}}
現在,通過輸入以下命令來編譯代碼:javac WhatIsJdbc.java。編譯將輸出WhatIsJdbc.class文件。使用以下命令從命令行執行此文件:java WhatIsJdbc。
(有關在命令行上與JDK交互的更多信息,請參見“ 什么是JDK?Java開發者工具包簡介 ”。)
一旦有了基本的Java程序,就可以包括JDBC庫。將清單2中的代碼粘貼到簡單Java程序的開頭。
清單2. JDBC導入
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.ResultSet;import java.sql.Statement;
這些導入中的每一個都提供對類的訪問,該類促進了標準Java數據庫連接:
· Connection 表示與數據庫的連接。
· DriverManager獲取與數據庫的連接。(另一個選項是DataSource,用于連接池。)
· SQLException 處理Java應用程序和數據庫之間的SQL錯誤。
· ResultSet并對Statement數據結果集和SQL語句建模。
我們將很快看到其中的每一個。
步驟3.將JDBC驅動程序添加到您的類路徑中
接下來,您將SQLite驅動程序添加到您的類路徑中。一個JDBC驅動程序是一個類,實現JDBC API為特定的數據庫。
從GitHub 下載SQLite驅動程序。確保獲取最新.jar文件并將其存儲在您會記得的地方。
下次執行Java程序時,將.jar通過類路徑將該文件拉入。有幾種設置類路徑的方法。清單3顯示了如何使用命令行開關來做到這一點。
清單3.在Java類路徑上執行SQLite驅動程序
java.exe -classpath /path-to-driver/sqlite-jdbc-3.23.1.jar:. WhatIsJdbc
注意,我們將類路徑設置為指向驅動程序和本地目錄。這樣,Java仍會找到我們的類文件。
步驟4.獲得數據庫連接
現在,類路徑可以訪問驅動程序?,F在,更改您的簡單Java應用程序文件,使其類似于清單4中的程序。
清單4.使用JDBC Connection類連接到SQLite
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.ResultSet;import java.sql.Statement;
class WhatIsJdbc{
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:sqlite:path-to-db/chinook/chinook.db";
conn = DriverManager.getConnection(url);
System.out.println("Got it!");
} catch (SQLException e) {
throw new Error("Problem", e);
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}}
編譯并執行此代碼。假設一切順利,您將得到一個肯定的消息。
找不到合適的驅動程序?
如果收到類似“”的錯誤,No suitable driver found for jdbc:sqlite則需要重新訪問類路徑并確保它指向您下載的驅動程序。驅動程序連接失敗是使用JDBC的初學者最常見的絆腳石。不要流汗。修復它。
現在,我們可以使用一些SQL命令了。
步驟5.查詢數據庫
有了實時連接對象,我們可以做一些有用的事情,例如查詢數據庫。清單5顯示了如何使用JDBC Connection和Statement對象查詢SQLite 。
清單5.使用JDBC查詢數據庫
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.ResultSet;import java.sql.Statement;
class WhatIsJdbc{
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:sqlite:path-to-db-file/chinook/chinook.db";
conn = DriverManager.getConnection(url);
Statement stmt = null;
String query = "select * from albums";
try {
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String name = rs.getString("title");
System.out.println(name);
}
} catch (SQLException e ) {
throw new Error("Problem", e);
} finally {
if (stmt != null) { stmt.close(); }
}
} catch (SQLException e) {
throw new Error("Problem", e);
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}}
在清單5中,我們使用Connection對象獲得一個Statement對象:conn.createStatement()。然后,我們使用此對象執行SQL查詢:stmt.executeQuery(query)。
該executeQuery命令返回一個ResultSet對象,然后我們用它來對進行數據迭代while (rs.next())。在此示例中,您應該看到我們查詢的專輯標題作為輸出。
請注意,我們還通過調用來關閉連接conn.close()。
與JDBC的網絡連接
清單5中的數據庫連接字符串用于本地連接:jdbc:sqlite:path-to-db-file/chinook/chinook.db。要通過網絡訪問數據庫,連接字符串將需要包括網絡URL和(通常)用于訪問數據庫的憑據。
使用JDBC做更多的事情
到目前為止,我們已經介紹了使用JDBC連接數據庫和發出SQL命令的基礎知識。雖然StatementsS和ResultSetS代表常見的場景很好地工作,你可能需要用更大或更復雜的應用程序的附加選項。幸運的是,JDBC庫不斷發展以滿足大多數數據庫訪問需求。
準備聲明
一種提高代碼靈活性的簡單方法是用替換Statement類PreparedStatement,如清單6所示。
清單6.使用JDBC PreparedStatements
String prepState = "insert into albums values (?, ?);";
PreparedStatement prepState =
connection.prepareStatement(sql);
prepState.setString(1, "Uprising");
prepState.setString(2, "Bob Marley and the Wailers ");
int rowsAffected = preparedStatement.executeUpdate();
PreparedStatement用Statement問號(?)替換的硬編碼值。使用PreparedStatements可優化代碼的重用性:a PreparedStatement僅被編譯一次,然后可以與各種參數一起重用。隨著代碼庫的增長,您只需在語句中插入新值,而不用修改字符串對象本身。
批量更新
每當應用程序要發布多個更新時,分批執行它們可以極大地提高性能。批處理的實質是獲取多個更新并將它們收集在一起,然后一次發布所有更新。清單7使用JDBC的批處理方法來執行幾個PreparedStatements 的批處理更新。
清單7.使用PreparedStatement進行批處理
prepState.setString(1, "Uprising");
prepState.setString(2, "Bob Marley and the Wailers");
preparedStatement.addBatch();
prepState.setString(1, "Wildflowers");
prepState.setString(2, "Tom Petty and the Heartbreakers");
preparedStatement.addBatch();
int[] rowsAffected = preparedStatement.executeBatch();
JDBC事務
關系數據庫中的事務允許將一組更新包裝在完全成功或失敗的交互中。通過JDBC使用事務的基礎是告訴系統關閉自動提交,然后在完成后手動告訴系統進行提交。默認情況下,自動提交功能為on,這意味著無論何時運行executeUpdate或executeInsert,命令都會被提交。
清單8顯示了JDBC事務的一小部分。
清單8. JDBC事務
connection.setAutoCommit(false);// Use executeUpdate multiple times
connection.commit();
當connection.commit()遇到,所有包裹在里面的更新將嘗試,如果有任何失敗,他們都將被回滾。
JDBC 4.3中還有許多值得探索的功能,包括CallableStatement用于存儲過程,使用DataSource對象以提高應用程序性能(尤其是通過連接池),以及將JDBC ResultSet轉換為Java Stream。
特定于數據庫的功能
盡管每個符合JDBC的數據庫都提供了相同的核心功能,以便通過SQL與數據庫連接和交互,但是某些數據庫的作用要比其他數據庫大。例如,Oracle DB提供了結果緩存,這不是JDBC規范所必需的。這是一個例子:
conn.prepareStatement ("select /*+ result_cache */ * from employees where employee_id < : 1");
結論
JDBC是Java最古老的API之一,它為Java應用程序開發的長期需求之一提供了易于使用的解決方案。僅了解本文演示的幾個JDBC調用,即可開始使用JDBC連接幾乎所有的數據庫。完成這些命令后,就可以開始探索JDBC中內置的一些更復雜的選項。
最后,開發這么多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯系方式,有時間記得幫我點下轉發讓跟多的人看到哦。
總結
以上是生活随笔為你收集整理的双表查询java代码_什么是JDBC?Java数据库连接性简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个带宇字的qq网名!
- 下一篇: 数据存储方式_寻找要操作数据的存储地址的