代码之家  ›  专栏  ›  技术社区  ›  Raj

Java中加载DB驱动程序的替代方法

  •  1
  • Raj  · 技术社区  · 14 年前

    除了加载DB驱动程序,还有其他方法吗 class.forName类 ?

    5 回复  |  直到 13 年前
        1
  •  4
  •   Thilo    14 年前

    现代的JDBC驱动程序应该在jar文件清单中提供足够的元数据,因此您可能不需要做任何事情。

    主要观点 Class#forName 是移除对特定JDBC驱动程序的编译时依赖性(并使其在运行时可配置)。如果在程序中使用Oracle驱动程序代码(使用它们的非标准JDBC扩展),并且不必硬编码驱动程序类名,那么也可以创建驱动程序类的常规实例。

     new oracle.jdbc.driver.OracleDriver();
    
        2
  •  9
  •   exexzian    11 年前

    现代司机不需要登记,因为他们有 通过包含驱动程序类的名称声明驱动程序存在的文件。

    只是使用 DriverManager.getConnection(...) ,并发现驱动程序本身。


    @蒂洛:我刚刚用PostgreSQL测试了一下,它很有效:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class JdbcDriverLoadTest {
    
        public static void main(String[] args) throws SQLException {
            Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5434/IKOffice_Core", "ik", "ik0000");
            System.out.println(c.getMetaData().getDatabaseProductName());
        }
    
    }
    
        3
  •  1
  •   developmentalinsanity    14 年前

    通常,您可以只创建它的一个实例,但这会导致对特定驱动程序的严格依赖。

    原因是什么Class.forName类使用是因为您可以使其可配置。它工作的原因是它触发类的静态初始值设定项运行,从而允许它向jdbc注册。

    • 直接实例化-创建实体类依赖-不好
        4
  •  1
  •   dogbane    14 年前

    也可以将驱动程序类添加到系统属性 jdbc.drivers 这是一个以冒号分隔的驱动程序类名列表 DriverManager

    例子:

    java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver MyApp
    

    资料来源:The DriverManager javadocs .

        5
  •  0
  •   Bipin Yadav    9 年前

    推荐文章