com.mysql.jdbc.PreparedStatement包之间的区别是什么?和java.sql.PreparedStatement?

时间:2012-08-22 02:06:13

标签: java mysql jdbc

我已将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包的转换?

1 个答案:

答案 0 :(得分:12)

  

为什么要显示两个不同的导入包?

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


  

以及为什么需要为com.mysql.jdbc.PreparedStatement包进行转换?

由于prepareStatement() specifiedjava.sql.PreparedStatement,而不是com.mysql.jdbc.PreparedStatement


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

另见: