Java提供JDBC(Java數據庫連接),作為JavaSDK(軟件開發工具包)的一部分。使用這個API,很容易連接到關係數據庫,並執行查詢、**、更新和刪除記錄等常見操作。
雖然核心jdbcapi包含在java中,但連接到MySQL或sqlserver等特定數據庫需要一個稱為數據庫驅動程序的附加組件。這個數據庫驅動程序是一個軟件組件,它將核心JDBC調用轉換為該數據庫所理解的格式。
在本文中,讓我們看看連接到MySQL數據庫的詳細信息以及如何使用它執行一些查詢。
如上所述,為了能夠連接到MySQL數據庫,您需要MySQL的JDBC驅動程序。這稱為Connector/J驅動程序,可以從MySQL站點下載。
下載ZIP(或焦油.GZ)文件,提取歸檔文件並複製JAR文件mysql connector java--bin.jar文件去一個合適的地方。運行任何使用MySQL JDBC驅動程序的代碼都需要這個文件。
假設您已經下載了MySQL數據庫,並在您可以訪問的地方正確設置它,那麼讓我們創建一個示例數據庫,以便我們可以使用它來連接和執行查詢。
使用您選擇的客戶機連接到數據庫,並運行以下語句來創建示例數據庫。
create database sample;我們還需要一個用戶名和密碼才能連接到數據庫(除非您想作為管理員連接,這通常是個壞主意)。
下面創建一個名為testuser的用戶,該用戶將使用securepwd密碼從運行MySQL數據庫的同一臺計算機(由localhost指示)連接到該數據庫。
create user 'testuser'@'localhost' identified by 'securepwd';如果要連接到另一臺計算機(名為remotemc)上運行的數據庫,則需要使用以下命令(remotemc可以是主機名或ip地址):
create user 'testuser'@'remotemc' identified by 'securepwd';現在已經創建了用戶名和密碼,我們需要授予對前面創建的示例數據庫的訪問權。
grant all on sample.* to 'testuser'@'localhost';或者,如果數據庫是遠程的:
grant all on sample.* to 'testuser'@'remotemc';現在,您應該驗證是否可以使用相同的密碼作為剛剛創建的用戶連接到數據庫。您還可以在連接後運行以下命令,以確保所有權限都正確。
create table joe(id int primary key auto_increment, name varchar(25));drop table joe;現在讓我們詳細瞭解如何從Java連接到MySQL。第一步是加載數據庫驅動程序。這是通過在適當的位置調用以下命令來實現的。
Class.forName("com.mysql.jdbc.Driver");代碼可能拋出異常,因此如果您打算處理它(例如格式化GUI的錯誤消息),就可以捕獲它。
try { Class.forName("com.mysql.jdbc.Driver");} catch(ClassNotFoundException ex) { // use the exception here}在類中的靜態塊中調用此代碼是非常常見的,因此如果無法加載驅動程序,程序將立即失敗。
public class Sample{ static { try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException ex) { System.err.println("Unable to load MySQL Driver"); } }}當然,為了能夠找到驅動程序,必須使用類路徑中包含的驅動程序JAR(上面下載並提取)來調用程序,如下所示。
java -cp mysql-connector-java-<version>-bin.jar:... <class to run>現在我們已經解決了從java加載MySQL驅動程序的細節,讓我們開始連接數據庫。創建數據庫連接的一種方法是使用DriverManager。
String jdbcUrl = ...;Connection con = DriverManager.getConnection(jdbcUrl);什麼是jdbcUrl?它表示連接的詳細信息,包括數據庫所在的服務器、用戶名等。下面是我們示例的示例URL。
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=secrepwd";注意,我們已經包含了連接所需的所有參數,包括主機名(localhost)、用戶名和密碼。(包括這樣的密碼不是一個好的做法,請參閱下面的替代方法。)
使用這個jdbcUrl,這裡有一個完整的程序來檢查連接。
public class Sample{ static { try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException ex) { System.err.println("Unable to load MySQL Driver"); } } static public void main(String[] args) throws Exception { String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=securepwd"; Connection con = DriverManager.getConnection(jdbcUrl); System.out.println("Connected!"); con.close(); }}請注意,數據庫連接是程序中的寶貴資源,必須如上所述正確關閉。但是,如果出現異常,上面的代碼不會關閉連接。要在正常或異常出口關閉連接,請使用以下模式:
try(Connection con = DriverManager.getConnection(jdbcUrl)) { System.out.println("Connected!");}如上所述,將密碼嵌入到JDBC URL中是一個壞主意。要直接指定用戶名和密碼,可以使用以下連接選項。
String jdbcUrl = "jdbc:mysql://localhost/sample";try(Connection con = DriverManager.getConnection(jdbcUrl, "testuser", "securepwd")) {}現在已經建立了到數據庫的連接,讓我們看看如何執行查詢,例如查詢數據庫版本:
select version();在java中執行一個查詢,如下所示。使用返回結果集的executeQuery()方法創建語句對象並執行查詢。
String queryString = "select version()";Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(queryString);打印結果集的版本,如下所示。1表示結果中列的索引,從1開始。
while ( rset.next()) { System.out.println("Version: " + rset.getString(1));}處理結果後,需要關閉對象。
rset.close();stmt.close();這涵蓋了從java連接到MySQL並執行簡單查詢的所有內容。
還可以查看我們的SQL命令備忘單。
...個關係資料庫可以有多個表。這些表是使用主鍵和外來鍵連線的。結構化查詢語言是用於在關係資料庫中儲存、管理和檢索資料的查詢語言。SQL是使用關係代數開發的。 SQL可以分為三個子類別。它們是資料操作語言(DDL)和資...
...管理系統。在RDBMS中,表用於儲存資料,鍵和索引有助於連線表。表是資料元素的集合,它們是實體。它包含行和列。這些行表示表中的單個條目。列表示屬性。 例如,銷售資料庫可以包含客戶和產品實體。客戶可以有客戶標識...
...異常和未檢查異常。當發生選中的異常時,Java應用程式連線到外部資源,如檔案、裝置或資料庫。這些異常由編譯器檢查。檢查的異常的一些示例包括IO異常和FileNotFound異常。當發生未檢查的異常時,應用程式不會連線到任何外...
...器、程式碼庫、工具和應用程式程式設計介面(API)。它連線專案所需的所有元件。程式設計師可以使用框架在程式中使用預定義的程式碼。一些常見的基於Java的框架有Spring、Hibernate、Struts、Maven和JSF。本文討論了Spring和Hibernate...
如果您經常編寫連線到資料庫伺服器的應用程式,那麼如果您知道如何在Windows機器上安裝MySQL資料庫以進行測試,這會有所幫助。 ...
... 然後,更多使用者生成的內容開始以“個人資料”網站的形式出現,如雅虎和MySpace。Blogger和LiveJournal這樣的部落格服務更進一步,而桌面“網頁編輯器”使得建立一個(不好看的)網頁而不知道任何標記成為可能...
...連結 為什麼使用Microsoft Access替代方案? 最好的免費資料庫軟體 其他Microsoft Access替代方案 ...
... 本教程的其餘部分假設Raspberry Pi已通電並連線到本地網路。您還應該為遠端命令列訪問配置SSH。 ...
...,最重要的、基本的和內在的方面之一是一個結構合理的資料庫模式。這相當於建造一所需要確保地基適當鋪設的房子,否則建造優質房屋的機會大大減少。 ...