gpt4 book ai didi

java - package com.mysql.jdbc.PreparedStatement; 之间有什么区别?和 java.sql.PreparedStatement?

转载 作者:行者123 更新时间:2023-11-29 01:08:06 26 4
gpt4 key购买 nike

我已经将 JAVA 应用程序与 MySql 连接起来。当我编写 PreparedStatement ps = null ;然后显示导入包的两个选项。两个建议的包是:com.mysql.jdbc.PreparedStatement;和 java.sql.PreparedStatement 。而且,当我导入 com.mysql.jdbc.PreparedStatement 包时,他们说要强制转换,如下所示。

ps = (PreparedStatement) con.prepareStatement("INSERT INTO Authors(Name) VALUES(?)");

当我在上面的句子中使用 java.sql.PreparedStatement 时不需要强制转换。

所以,我的问题是:为什么显示两个不同的导入包?为什么 com.mysql.jdbc.PreparedStatement 包需要转换?

最佳答案

why two different import package are showing ?

因为这两个类都存在于您的编译时类路径中,并且您的 IDE 试图提供帮助。


and why casting needed for com.mysql.jdbc.PreparedStatement package ?

因为 prepareStatement()specified返回 java.sql.PreparedStatement,而不是 com.mysql.jdbc.PreparedStatement


java.sql.PreparedStatement 是一个接口(interface),您应该一直使用它。 MySQL 是一个具体的实现,您不应该将 JDBC 代码与 MySQL 的具体实现紧密耦合。否则,如果您想将数据库服务器(以及 JDBC 驱动程序)切换到不同的供应商(如 PostgreSQL),则必须对代码进行大量更改。如果您一直使用 java.sql 包中的标准 JDBC 接口(interface),那么您需要更改的只是 JDBC URL,也许还有用户名和密码以及一些特定于数据库的 SQL 语句.

另见:

关于java - package com.mysql.jdbc.PreparedStatement; 之间有什么区别?和 java.sql.PreparedStatement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065464/

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