现在都在用spring里,在spring的配置文件里,注入一个datasource, 像下面利用c3p0构建一个datasource一样
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${db.driver}</value>
</property>
<property name="jdbcUrl">
<value>${db.url}</value>
</property>
<property name="user">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
</bean>
问题是,当我们自己写一个简单的例子的时候,不想引用一大堆的开源东东,想干干净净的用一个JDK就ok了,于是一般都是用下面的代码
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
Connection con = DriverManager.getConnection(url , username , password ) ;
但是,这样是无法直接拿到datasource的,只能拿到connection, 原因是datasource在JDK里只是一个 接口,它只是一个API的标准,实现全部交给数据库厂商去实现了,所以在JDK中直接获取datasource,不利用其他的东东是不可能。
但我们要获取一个datasource,一定会用这个数据库链接包,所以,我们必然要引用这个jar包,举例mysql, 我们引用了mysql-connector-java-5.1.6.jar. 在这里一定有它的datasource的实现方式,于是我们可以用如下代码:
MysqlDataSource ds= new MysqlDataSource();
ds.setServerName("localhost");
ds.setPortNumber(3306);
ds.setDatabaseName("test");
ds.setUser("root");
ds.setPassword("1234");
结论:要想只用一个jdk拿出datasource是不可能的,因为jdk没有,请去要连接的数据库的厂商实现包里去找