日期:2014-05-19  浏览次数:20639 次

数据源配置到库与不配置到库的区别?求解
配置数据源的时候一般我们会把数据源配置到数据库(一个库)上面去。
[code=Java][/code]import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.log4j.Logger;

public class DBUtils {
private static final Logger LOGGER = Logger.getLogger(DBUtils.class);

/**
* 得到数据库连接对象,如果异常返回null
*/
public static Connection getMysqlConnection() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/test"); //此处我将数据源的链接配置到test库
dataSource.setPassword("test");
dataSource.setUsername("root");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
Connection con=null;
try {
con = dataSource.getConnection();
return con;
} catch (SQLException e) {
//LOGGER.error("class: DBUtils method:getMysqlConnection SQLException"+e);
e.printStackTrace();
return null;
}
}

/**
* 释放数据库连接等对象
*/
public static void releaseConnection(Statement st,Connection con){
if(null!=st){
try {
st.close();
} catch (SQLException e) {
LOGGER.error("class:DBUtils method:releaseConnection,Statement close SQLException");
}
}
if(null!=con){
try {
con.close();
} catch (SQLException e) {
LOGGER.error("class:DBUtils method:releaseConnection,Connection close SQLException");
}
}
}

}

在上面的源代码中我将数据源连接到一个test库上去,但其实我也可以:
dataSource.setUrl("jdbc:mysql://localhost:3306/")这样写,这样在后面的代码中,也可以访问test库只是需要在sql中多加一个test.表名,这样的方式去访问,现在对数据源这个概念有点迷惑了,数据源不是对应一个库,而是一个数据库服务,可以对应多个库,求解,希望高人指点,数据源的概念,不胜感激。

------解决方案--------------------
搜出来得结果很有道理。

数据库和数据源
数据库是一个数据的工厂,可以理解成产品的生产厂家,

如果你从厂家租用东西,厂家就马上找人开工,启动设备,等生产好之后,发货给你。当然整个生产过程需要比较长的时间。

数据源,是一个产品代理仓库,代理那里原来就有一些生产好的产品了,所以你从代理获取产品,可以马上就得到。当然代理的仓库也是有大小限制的。

无论哪种情况,你用完了某个产品,记得要归还哦。

还有如果你以前开发过微软的,比如VB等。
你的数据库是ACCESS
而数据源是你在ODBC里配置的。