gpt4 book ai didi

java - JAR 升级后找不到符号 PreparedStatement

转载 作者:行者123 更新时间:2023-12-01 21:24:41 25 4
gpt4 key购买 nike

我刚刚升级了 mysql jdbc 连接 JAR(从 mysql-connector-java-5.0.5.jar 到 mysql-connector-java-8.0.19.jar),项目开始显示导入语句错误:

import com.mysql.jdbc.PreparedStatement;

java: cannot find symbol
symbol: class PreparedStatement
location: class package.ClassName

在哪里可以找到新 jar 文件中 PreparedStatement 的位置或包,或者它是否被新 JAR 中的任何其他类替换?

enter image description here

最佳答案

com.mysql.jdbc.PreparedStatement 是 MySQL 5.x JDBC 驱动程序的内部类。您的代码不应导入它。它应该使用标准的 java.sql.PreparedStatement 类。

MySQL 8.x JDBC 驱动程序中的包名称已更改,这就是导致您的代码开始出现编译错误的原因。

解决方法:

  1. 修复您的代码,使其不导入任何 MySQL 实现类1。请改用 java.sql.*javax.sql.* 类。

  2. 更改您的项目依赖项,使 MySQL 驱动程序 JAR 不是编译时依赖项。这样做会导致对 JDBC 驱动程序的任何意外源代码依赖性被标记为编译错误。它还会阻止您的 IDE 对 import 语句提出错误的建议。 (我的猜测是这就是伪造导入进入您的代码库的方式。)

  3. 如果您的代码(仍然)使用 Class.forName 来加载 JDBC 驱动程序,请将其改为使用 java.sql.DriverManager;见javadoc .这样您就不会被 MySQL 驱动程序类名的另一个更改所困扰。


1 - 您的 Java 代码不应该需要依赖于特定于 MySQL 的 API。据我所知,MySQL 实现类反射(reflect)了标准的 JDBC API,因此直接使用它们没有任何好处。并非所有供应商都如此。

关于java - JAR 升级后找不到符号 PreparedStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63245300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com