我编写了一个dbconnection.java类,它有一个静态块,我加载了驱动程序类
static
{
try
{
Class.forName(com.mysql.jdbc.Driver);
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
我知道写这个静态块是为了注册驱动程序。但即使我评论这个静态块并尝试建立数据库连接,它也会连接起来。
所以我想知道写这个静态块 的 。
答案 0 :(得分:1)
(我回答这个问题,因为我们很遗憾没有RTFM关闭原因)
如果您阅读tutorial provided by oracle,您会发现这曾经是必要的,但有许多现代(JDBC 4.0)驱动程序,不是这样:
在以前的JDBC版本中,要获得连接,首先必须通过调用方法Class.forName 来初始化JDBC驱动程序。此方法需要java.sql.Driver类型的对象。每个JDBC驱动程序都包含一个或多个实现接口java.sql.Driver的类。 Java DB的驱动程序是org.apache.derby.jdbc.EmbeddedDriver和org.apache.derby.jdbc.ClientDriver,而MySQL Connector / J的驱动程序是com.mysql.jdbc.Driver。请参阅DBMS驱动程序的文档以获取实现接口java.sql.Driver的类的名称。
自动加载在类路径中找到的任何JDBC 4.0驱动程序。 (但是,必须使用方法Class.forName手动加载JDBC 4.0之前的任何驱动程序。)
(强调我的)
答案 1 :(得分:-2)
将此代码放在静态块中用于确保一个进程具有相同的驱动程序。它是在类加载时执行的(或者是初始化的,确切地说,但是你通常不会注意到它的区别)。 可以在this link
查看详细信息