一、通过driver接口连接数据库
/** * Driver 是一个接口: 数据库厂商必须提供实现的接口. 能从其中获取数据库连接. * 可以通过 Driver 的实现类对象获取数据库连接. * * 1. 加入 mysql 驱动 * 1). 解压 mysql-connector-java-5.1.7.zip * 2). 在当前项目下新建 lib 目录 * 3). 把 mysql-connector-java-5.1.7-bin.jar 复制到 lib 目录下 * 4). 右键 build-path , add to buildpath 加入到类路径下.s * @throws SQLException */ @Test public void testDriver() throws SQLException { //1. 创建一个 Driver 实现类的对象 Driver driver = new com.mysql.cj.jdbc.Driver(); //2. 准备连接数据库的基本信息: url, user, password String url = "
jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false";Properties info = new Properties();info.put("user", "root");info.put("password", "1230");//3. 调用 Driver 接口的 connect(url, info) 获取数据库连接Connection connection = driver.connect(url, info);System.out.println(connection);}
以上方式连接数据库是最基本的方式,但是没有一定的灵活性,所以可以用Properties类读取properties文件来进行解耦,以便通过更改配置文件而不更改代码来进行与其他数据库的连接
String driverClass = null; String jdbcUrl = null; String user = null; String password = null; //读取类路径下的 jdbc.properties 文件 InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(in); driverClass = properties.getProperty("driver"); jdbcUrl = properties.getProperty("jdbcUrl"); user = properties.getProperty("user"); password = properties.getProperty("password"); //通过反射常见 Driver 对象. Driver driver = (Driver) Class.forName(driverClass).newInstance(); Properties info = new Properties(); info.put("user", user); info.put("password", password); //通过 Driver 的 connect 方法获取数据库连接. Connection connection = driver.connect(jdbcUrl, info); return connection; }
二、通过DriverManager管理类连接数据库
/** * DriverManager 是驱动的管理类. * 1). 可以通过重载的 getConnection() 方法获取数据库连接. 较为方便 * 2). 可以同时管理多个驱动程序: 若注册了多个数据库连接, 则调用 getConnection() * 方法时传入的参数不同, 即返回不同的数据库连接。 * @throws Exception */ @Test public void testDriverManager() throws Exception{ //1. 准备连接数据库的 4 个字符串. //驱动的全类名. String driverClass = "com.mysql.cj.jdbc.Driver"; //JDBC URL String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false"; //user String user = "root"; //password String password = "1230"; //2. 加载数据库驱动程序(对应的 Driver 实现类中有注册驱动的静态代码块.) Class.forName(driverClass); //3. 通过 DriverManager 的 getConnection() 方法获取数据库连接. Connection connection = DriverManager.getConnection(jdbcUrl, user, password); System.out.println(connection); }
通用性改写
public Connection getConnection2() throws Exception{ //1. 准备连接数据库的 4 个字符串. //1). 创建 Properties 对象 Properties properties = new Properties(); //2). 获取 jdbc.properties 对应的输入流 InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties"); //3). 加载 2) 对应的输入流 properties.load(in); //4). 具体决定 user, password 等4 个字符串. String user = properties.getProperty("user"); String password = properties.getProperty("password"); String jdbcUrl = properties.getProperty("jdbcUrl"); String driver = properties.getProperty("driver"); //2. 加载数据库驱动程序(对应的 Driver 实现类中有注册驱动的静态代码块.) Class.forName(driver); //3. 通过 DriverManager 的 getConnection() 方法获取数据库连接. return DriverManager.getConnection(jdbcUrl, user, password); }
——————————————————————————————————————
附上jdbc.properties配置文件的内容
#driver=oracle.jdbc.driver.OracleDriver #jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl #user=scott #password=java driver=com.mysql.cj.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false user=root password=1230