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

JDBC 連接中 DriverManager.getConnection 強制類型轉換詳解

     編輯:程式設計綜合問答

問題現象

MyEclipse 中 JDBC 連接代碼報錯,需要在 DriverManager.getConnection() 前加 (Connection) 強制轉型。

代碼對比

// 錯誤寫法
Connection conn = DriverManager.getConnection(url, user, pass);

// 正確寫法
Connection conn = (Connection) DriverManager.getConnection(url, user, pass);

根本原因

DriverManager.getConnection() 返回類型是 java.sql.Connection 接口,但編譯器在某些環境下無法確認具體實現類是否兼容當前項目引用的 JDBC 驅動版本,導致類型檢查失敗。

類比理解

就像「新出生的小狗少了一條腿」,雖然它本質上是狗,但不符合「四條腿」的接口定義,必須通過強制轉型告訴編譯器:「按 Connection 接口標準對待它」。

更優雅的解決方案

// 方案一:使用 DataSource(推薦)
DataSource ds = new MysqlDataSource();
ds.setURL(url);
ds.setUser(user);
ds.setPassword(pass);
Connection conn = ds.getConnection(); // 無需轉型

// 方案二:確保引用正確的 mysql-connector-java 版本
// pom.xml 中指定版本與數據庫匹配
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> <!-- 匹配 MySQL 8.0 -->
</dependency>

版本兼容性檢查清單

  • MySQL 服務器版本(如 5.7 / 8.0)
  • JDBC 驅動版本(mysql-connector-java)
  • JDK 版本(驅動 8.0+ 需 JDK 8+)
  • 項目編譯目標版本
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved