Class.forName("org.postgresql.Driver");
为什么可以加载driver到driver manager??
原因是org.postgresql.Driver中有静态代码块,和静态成员变量,他们会在load class时候执行。
静态代码块中有注册driver的操作。
static {
try {
// moved the registerDriver from the constructor to here
// because some clients call the driver themselves (I know, as
// my early jdbc work did - and that was based on other examples).
// Placing it here, means that the driver is registered once only.
register();
} catch (SQLException e) {
throw new ExceptionInInitializerError(e);
}
}
public static void register() throws SQLException {
if (isRegistered()) {
throw new IllegalStateException(
"Driver is already registered. It can only be registered once.");
}
Driver registeredDriver = new Driver();
DriverManager.registerDriver(registeredDriver);
Driver.registeredDriver = registeredDriver;
}
连接数据库的步骤:
1.加载driver
2.DriverManager根据url username password返回connection
3.Connection产生statement/preparedStatement/callableStatement
4. Statement excuteQuery/excuteUpdate 产生resultSet/int
5. 处理resultSet/int
6.关闭连接. connection/statement/resultset