通过Driver获取数据库连接

先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包
Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据库连接 可以通过Driver的实现类的对象获取数据库连接
* 1.加入mySql驱动
* 1.1 解压mysql-connector-java-5.1.39.zip 1.2 在当前项目下新建lib目录 1.3
* 把mysql-connector-java-5.1.39-bin.jar复制到lib目录下 1.4 右键,buildPath,add to
* buildPath加入到类路径下
第一种方法,不需要配置文件,直接获取数据库连接
@Test
public void testDriver() throws Exception {
// 1.创建一个Driver 的实现类的对象
Driver driver = new com.mysql.jdbc.Driver();
// 2.准备连接数据库的基本信息,url,user,password
String url = "jdbc:mysql://localhost:3306/test"; Properties info = new Properties();
info.put("user", "root");
info.put("password", "123456"); // 3.调用Driver接口的connect(url,info)获取数据库连接
Connection connection = driver.connect(url, info); System.out.println(connection);//com.mysql.jdbc.JDBC4Connection@73f712
}
为了使得程序解耦,并且更加通用,使用如下方案
编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接 解决方案:把数据库驱动Driver
实现类的全类名、url、user、password 放入到一个配置文件中, 通过修改配置文件的方式实现和具体的数据库解耦。
代码:
public Connection getConnection() throws Exception {
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;
}
@Test
public void testGetConnection() throws Exception{
System.out.println(getConnection());//com.mysql.jdbc.JDBC4Connection@1556938
}
properties文件内容如下
#driver=oracle.jdbc.driver.OracleDriver
#jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#password=java driver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/test
user=root
password=123456
这样如果想连接其他数据库时,只需修改此文件即可,无需修改代码
通过Driver获取数据库连接的更多相关文章
- MYSQL 之 JDBC(一): 数据库连接(一)通过Driver接口获取数据库连接
通过Driver接口获取数据库连接 数据持久化 数据库存取技术分类 JDBC直接访问数据库 JDO技术 第三方O/R工具,如Hibernate,ibatis等JDBC是java访问数据库的基石 JDB ...
- <一>获取数据库连接
一.JDBC_通过Driver接口获取数据库连接 1. Driver是一个接口:数据库厂商必须提供实现的接口,可以从其中 获取数据库连接. 2.JDBC URL由三部分组成,各部分用冒号隔开,格式:j ...
- JAVA jdbc获取数据库连接
JDBC获取数据库连接的帮助类 import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManage ...
- 使用DriverManager获取数据库连接的一个小改进
由于使用DriverManager获取数据库连接时,由于DriverManager实现类中有一段静态代码块,可以直接注册驱动,且可以同时管理多个驱动程序 所以当换数据库连接时需要指定不同的数据库,那么 ...
- 使用DriverManager获取数据库连接
DriverManager 是驱动的管理类 * 1).可以通过重载的getConnection() 方法获取数据库连接,较为方便 * 2).可以同时管理多个驱动程序,若注册了多个数据库连接,则调用ge ...
- JDBC_获取数据库连接
<span style="font-size:24px;">package src.com.jdbc.java; import java.io.IOException; ...
- 获取数据库连接对象Connection
2018-11-04 19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...
- JDBC编程:获取数据库连接
JDBC(Java Database Connectivity),即Java数据库连接.通过JDBC编程,可以使Java应用程序和数据库进行交互. JDBC驱动的方式有很多种,我们常用的驱动方式为:本 ...
- JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接
1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...
随机推荐
- D2 前端技术论坛总结(上)
得幸获得D2前端技术论坛门票一张,今天就去了,公司还给批假了(有可能不会算做请假,哈哈). 早上8点50出门,骑个小毛驴,大概9点30分左右,到了阿里巴巴西溪园区,很多人,进去的门口有专人接待,看D2 ...
- PCA MATLAB
之前princomp函数还可以正常使用,但是今天突然不能使了!总是显示错误使用 pca输入参数太多. 出错 princomp (line 29) [varargout{1:nargout}]=p ...
- Xcode代码格式化教程,可自定义样式
来源:iOS_小松哥 链接:http://www.jianshu.com/p/a725e24d7835 为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代 ...
- iOS 修改网络图片的大小 宽和高
//image宽和高 好用 NSString *strTemplateHTML = [NSString stringWithFormat:@"<html><head> ...
- 【Mood-5】14条建议,使你的IT职业生涯更上一层楼
升值为企业IT部门的领导者,并非一件易事.从一般大众中脱颖而出,则更不容易. 2013是一个好年头,据专家报告显示,6月所有新工作中,10%来自技术领域.这对于那些希望高升.换岗.跳槽的IT技术人员来 ...
- axure rp pro 6.5 注册码
发现一可用的注册码: Name:BEAN Serial:MZlb4FJwOVw+j04A4pX8S5genhcCOo1adsaH/ZHOukDY7OyPJcCKUHlwUEfU0Osr (已验证可用) ...
- php实现签到功能
首先我在数据库里建了两张表,一个是用户的积分表,一个是签到状态表,分来用来记录用户的积分数和先到状态 在用户签到状态表中我们有一个字段,last_sign_time,即上一次签到时间,每次可以签到的时 ...
- JavaScript 中的算术运算
JavaScript中算术运算在溢出(overflow).下溢(underflow)或被零整除时不会报错,当数字运算结果超过了JavaScript所能表示的数字上限(溢出),结果为一个特殊的无穷大(i ...
- CSS/CSS3 如何实现元素水平居中
更新:可直接访问 [CSS/CSS3 如何实现元素水平居中] 查看效果,右键查看源代码 -------------------------------------------------分割线---- ...
- 元数据metadata 对IO有多大影响
日志文件系统(journaling file systems)可防止系统崩溃时导致的数据不一致问题.对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生 系统崩溃时可以根据日志 ...