java中使用DataSource连接SQL Server数据库

前一阵子同事让看一个数据库连接的问题,说是弄了好久了都不成功,不知道问题出在哪里。我想着不就是连接数据库嘛,一个JDBC能有多难,过去一看,用的DataSource、Context.lookup,没见过这种的,,就顿时傻眼了。于是先用常规的JDBC连接方式解决他现在的问题,事后自己来琢磨这个什么鬼。

百度了一下这个东东,说的都是跟jndi有关系,本人不懂JNDI,也没深入研究这个,只是把这种数据库的连接方式整明白了,这里记录下做个备注。

1、在容器中添加配置

从所谓的Context上下文应该就能看出来,这种方式依赖容器,必须得把项目发到到服务器上才能用。所以第一步就是在容易中进行相应配置啦。我这里用的是Tomcat6.0。

打开tomcat的conf/context.xml文件,在Context标签内添加如下代码:

<Resource name="jdbc/sqlconnpool"
      auth="wjl"
      type="javax.sql.DataSource"
      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
      url="jdbc:sqlserver://127.0.0.1:1433;databaseName=test"
      username="sa"
      password="sa"
      maxActive="100"
      maxIdle="30"
      maxWait="10000"/>

要修改的地方有以下几个:

a、name:这个可以随便写,但是一定要记住,后面有地方要用;

b、driverClassName:驱动信息,根据要连接的数据库写就好,我这里连接的是SQL Server

c、url:数据库连接,主要填数据库所在的IP地址、端口号和连接的数据库名称

d、username:登陆数据库的用户名

e、password:登陆数据库的密码

(PS:跟Hibernate、spring中的配置超像酷

2、在web.xml中添加配置:

<resource-ref>
    <description>DB Connection Pool</description>
    <res-ref-name>jdbc/sqlconnpool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>wjl</res-auth>
</resource-ref>

修改的点:

a、res-ref-name:必须与容器中的name属性相同

b、res-type:javax.sql.DataSource,必须填这个

c、res-auth:最好与与容器中的相同

至于description,随便填。

3、添加测试

这个测试与一般的JDBC数据库连接测试不一样,不能直接用main方法测试,得发布项目,通过项目进行访问。我本地用的是Servlet:

try {
	Context ctx = new InitialContext();
	Context envContext = (Context) ctx.lookup("java:/comp/env");
	DataSource ds = (DataSource) envContext.lookup("jdbc/sqlconnpool");//与context.xml中的name相同、与web.xml中的res-ref-name相同
	Connection conn = ds.getConnection();
	System.out.println(conn);
	conn.close();
} catch (NamingException e) {
	e.printStackTrace();
} catch (SQLException e) {
    e.printStackTrace();
}

 至此,使用DataSource连接数据完成。

猜你喜欢

转载自1017401036.iteye.com/blog/2361428