public static Connection getConnection() throws Exception {
// 1.读取配置文件中的4个基本信息
如果写一个类需要动态的获取某个文件的位置,从而能够获取此文件的资源。那么,使用Class.getResourceAsStream()方法便可以。 这样就不用每次去修改代码中文件的绝对地址或详细地址了。 这是它的源码:我们可以看到它最终返回了一个输入流,也就是返回一个InputStream对象方便对此文件资源通过IO流进行获取。
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties:常用来处理配置文件。key和value都是String类型
Properties pros = new Properties();
使用Properties集合对象中的方法load读取保存键值对的文件
关于使用Properties集合中的load方法,还有一些注意事项:
1. 存储键值对的文件中,键与值默认的连接符号可以使用=,空格(其它符号)
2. 存储键值对的文件中,可以使用#进行注释,被注释的键值对不会再被读取
3. 存储键值对的文件中,键与值默认都是字符串,不用再加引号
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
// 2.加载驱动
Class.forName("")的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码段。
而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的 Driver类的代码都必须类似如下:
public class MyJDBCDriver implements Driver {
static {
DriverManager.registerDriver(new MyJDBCDriver());
}
}
既然在静态初始化器的中已经进行了注册,所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了。
Class.forName(driverClass);
// 3.获取连接
DriverManager类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接.此外,DriverManager类中的方法都是静态方法,所以在程序中无须对它进行实例化,直接通过类名就可以调用.DriverManager类的常用方法有getConnection(String url,String user,String password)方法,
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}