以下是我的代码
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost/employee","root","root");当我们与Oracle驱动程序连接时,我们指定驱动程序类型,即(type-1,type-2,type-3,type-4")
Class.forName("jdbc.oracle.driver.JdbcOracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:XE","System","System");为什么我们不为MySQL数据库这样做呢?
发布于 2017-02-12 11:56:44
使用jdbc,我们不会在代码中指定驱动程序类型。我们指定驱动程序类和连接字符串。通过观察这两个,你可以(也可能不)推断出类型。在您的示例中,对于mysql和oracle,您都使用了它们的Type-4驱动程序。
当您看到一些包含odbc的连接字符串或驱动程序名称时,您可以非常确定这是类型1驱动程序。几乎所有的数据库都可以使用odbc。在您的代码中,sql将对db提供程序保持相当中立。但这是最慢的方法。
类型2驱动程序很少见。Mysql没有。甲骨文有一个OCI驱动程序,您可以使用它来代替thin。如果使用oci驱动程序,则必须在系统上使用不同的连接字符串、不同的驱动程序名称、不同的jar和一些额外的安装/配置。这些驱动程序提供了一些oracle thin上通常没有的额外功能,例如。群集。一些数据库,如SQLite,只有T-2驱动程序,没有其他驱动程序。
我没有遇到任何Type-3驱动程序,所以我不能智能地使用它们。
Type4是连接到数据库的最常见方式。你的两个例子都是同一类型的。这些驱动程序只需要在您的系统上进行最低限度的安装/配置,能够提供通用的sql子集(如T1)和特定于数据库的功能(如T2)。作为纯T2,您可以非常确定您的代码将在不同的操作系统(_un_like java )上运行良好。
正如您所看到的,没有简单的方法来推断驱动程序的类型。大多数情况下,这甚至无关紧要。趋势是从odbc转向T4。T2还在做一些高性能的事情,但很少见。
希望这能有所帮助
https://stackoverflow.com/questions/42172820
复制相似问题