3 回答

TA貢獻1998條經驗 獲得超6個贊
這是一步一步解釋如何安裝MySQL和JDBC以及如何使用它:
下載并安裝MySQL服務器。按照通常的方式做到這一點。無論何時更改端口號,請記住端口號。這是默認情況
3306
。下載 JDBC驅動程序并放入類路徑,解壓縮ZIP文件并將包含的JAR文件放在類路徑中。特定于供應商的JDBC驅動程序是 JDBC API的具體實現(此處為教程)。
如果您使用的是Eclipse或Netbeans之類的IDE,則可以通過將JAR文件作為庫添加到項目屬性中的構建路徑來將其添加到類路徑中。
如果您在命令控制臺中執行“普通的vanilla”,則需要在執行Java應用程序時在
-cp
或-classpath
參數中指定JAR文件的路徑。java -cp .; / path / to / mysql-connector.jar com.example.YourClass
的
.
是就在那里給添加當前目錄到類路徑中,以便它可以找到com.example.YourClass
和;
是類路徑分隔符,因為它是在Windows中。在Unix中,:
應該使用克隆。在MySQL中創建一個數據庫。我們來創建一個數據庫
javabase
。你當然想要世界統治,所以讓我們也使用UTF-8。CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
為Java 創建用戶并授予其訪問權限。僅僅因為使用
root
是一種不好的做法。CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
是的,
java
是用戶名,password
是這里的密碼。確定 JDBC URL。要使用Java連接MySQL數據庫,您需要使用以下語法的JDBC URL:
JDBC:MySQL的://主機名:端口/數據庫名稱
所以最終的URL應如下所示:
JDBC:MySQL的://本地主機:3306 / javabase
hostname
:安裝MySQL服務器的主機名。如果它安裝在您運行Java代碼的同一臺機器上,那么您可以使用它localhost
。它也可以是一個IP地址127.0.0.1
。如果您遇到連接問題并使用127.0.0.1
而不是localhost
解決它,那么您的網絡/ DNS /主機配置中存在問題。port
:MySQL服務器偵聽的TCP / IP端口。這是默認情況3306
。databasename
:您要連接的數據庫的名稱。那是javabase
。使用Java 測試與 MySQL 的連接。使用
main()
測試連接的方法創建一個簡單的Java類。String url = "jdbc:mysql://localhost:3306/javabase";String username = "java";String password = "password";System.out.println ("Connecting database...");try (Connection connection = DriverManager.getConnection(url, username, password)) { System.out.println("Database connected!");} catch (SQLException e) { throw new IllegalStateException("Cannot connect the database!", e);}
如果你得到了
SQLException: No suitable driver
,那么這意味著JDBC驅動程序根本沒有自動加載,或者JDBC URL錯誤(即任何加載的驅動程序都無法識別它)。通常,當您將JDBC 4.0驅動程序放在運行時類路徑中時,應該自動加載它。要排除其中一個,您可以隨時手動加載它,如下所示:System.out.println("Loading driver...");try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Driver loaded!");} catch (ClassNotFoundException e) { throw new IllegalStateException("Cannot find the driver in the classpath!", e);}
需要注意的是,
newInstance()
在呼叫未在這里需要。它只是修復舊的和馬車org.gjt.mm.mysql.Driver
。這里解釋。如果此行拋出ClassNotFoundException
,則包含JDBC驅動程序類的JAR文件根本沒有放在類路徑中。請注意,您不需要在連接之前每次都 加載驅動程序。在應用程序啟動期間只需一次即可。
如果您獲得
SQLException: Connection refused
或Connection timed out
特定于MySQLCommunicationsException: Communications link failure
,則意味著DB根本無法訪問。這可能有以下一個或多個原因:要解決這個問題,請遵循以下建議:
請注意,關閉
Connection
它非常重要。如果您沒有關閉連接并在短時間內繼續獲取大量連接,那么數據庫可能會用完連接而您的應用程序可能會中斷。始終Connection
在try-with-resources
聲明中獲得?;蛘?,如果你對Java 7的是沒有,明確地關閉它在finally
一個的try-finally
塊。關閉finally
只是為了確保它在異常情況下也會關閉。這也適用于Statement
,PreparedStatement
和ResultSet
。驗證并測試它們
ping
。刷新DNS或使用JDBC URL中的IP地址。
根據
my.cnf
MySQL DB 驗證它。啟動數據庫。
驗證mysqld是否在沒有啟動的情況下啟動
--skip-networking option
。重新啟動數據庫并相應地修改代碼以關閉連接
finally
。禁用防火墻和/或配置防火墻/代理以允許/轉發端口。
JDBC URL中的IP地址或主機名是錯誤的。
本地DNS服務器無法識別JDBC URL中的主機名。
JDBC URL中的端口號丟失或錯誤。
數據庫服務器已關閉。
數據庫服務器不接受TCP / IP連接。
數據庫服務器已用完連接。
Java和DB之間的某些東西阻止了連接,例如防火墻或代理。
就連接問題而言,這就是它。您可以在這里找到一個更高級的教程,如何借助基本的DAO類在數據庫中加載和存儲完整的Java模型對象。
添加回答
舉報