首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 專案無法解析 com.mysql.jdbc.ResultSet:JDBC 驅動包衝突與導入錯誤

     編輯:程式設計綜合問答

新手調試網站後台登入程式時,IDE 提示「無法解析導入 com.mysql.jdbc.ResultSet」,通常是因為手動導入了 MySQL JDBC 驅動 JAR 的內部類別,而非使用標準 JDBC API (java.sql.ResultSet)。

錯誤代碼

import com.mysql.jdbc.ResultSet; // 錯誤!這是驅動實現類,不應直接依賴
// ...
ResultSet rs = stmt.executeQuery(sql);

正確導入

import java.sql.ResultSet; // 標準 JDBC 介面
import java.sql.Statement;
import java.sql.Connection;
// ...
ResultSet rs = stmt.executeQuery(sql); // 多型:實際執行時為驅動實現類實例

根本原因

  • JDBC 設計模式:應用程式只依賴 java.sql.* 介面,具體實現由驅動廠商提供(com.mysql.jdbc.* 或 com.mysql.cj.jdbc.* 8.0+)。
  • 直接導入實現類會導致:
    ① 程式鎖定特定驅動版本,升級驅動即編譯報錯。
    ② 違反「面向介面編程」原則。
    ③ 模組化(Java 9+)下驅動內部類別不再導出,編譯直接失敗。

驅動版本對應關係

無論驅動版本,應用程式永遠只導入 java.sql.*。

Maven 依賴範例

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> <!-- 或 5.1.49 -->
</dependency>

常見伴隨問題

  • ClassNotFoundException: com.mysql.jdbc.Driver:驅動 JAR 未放入 classpath(Maven 未生效、WEB-INF/lib 缺失)。
  • Communications link failure:連線參數錯誤(host/port)、防火牆、MySQL bind-address 設定。
  • Public Key Retrieval is not allowed:MySQL 8.0+ 預設需 SSL,連線字串加 ?useSSL=false&allowPublicKeyRetrieval=true(僅開發環境)。

堅持使用標準 JDBC API 介面,是 Java 資料庫程式可移植、可維護的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
MySQL 版本驅動類別前綴Maven 坐標 (範例)
5.x / 早期 8.xcom.mysql.jdbcmysql:mysql-connector-java:5.1.49
8.0.13+com.mysql.cj.jdbcmysql:mysql-connector-java:8.0.33