﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-javainthinking-文章分类-数据库</title><link>http://www.blogjava.net/javainthinking/category/1494.html</link><description>熊炼的个性空间和java学习之旅</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:45:18 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:45:18 GMT</pubDate><ttl>60</ttl><item><title>数据库连接的封装</title><link>http://www.blogjava.net/javainthinking/articles/6932.html</link><dc:creator>熊炼的个性空间和java学习之旅</dc:creator><author>熊炼的个性空间和java学习之旅</author><pubDate>Thu, 30 Jun 2005 03:34:00 GMT</pubDate><guid>http://www.blogjava.net/javainthinking/articles/6932.html</guid><wfw:comment>http://www.blogjava.net/javainthinking/comments/6932.html</wfw:comment><comments>http://www.blogjava.net/javainthinking/articles/6932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javainthinking/comments/commentRss/6932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javainthinking/services/trackbacks/6932.html</trackback:ping><description><![CDATA[<P>/*<BR>&nbsp;* 创建日期 2005-4-26<BR>&nbsp;*<BR>&nbsp;* TODO 要更改此生成的文件的模板，请转至<BR>&nbsp;* 窗口 － 首选项 － Java － 代码样式 － 代码模板<BR>&nbsp;*/<BR>package com.xionglian.util;</P>
<P>import java.sql.Connection;<BR>import java.sql.DriverManager;<BR>import java.sql.ResultSet;<BR>import java.sql.ResultSetMetaData;<BR>import java.sql.Statement;<BR>import java.util.ArrayList;<BR>import java.util.HashMap;<BR>import java.util.List;<BR>import java.util.Map;</P>
<P>/**<BR>&nbsp;* @author xl<BR>&nbsp;*<BR>&nbsp;*/<BR>public class Database<BR>{<BR>&nbsp;&nbsp;&nbsp; /** method */<BR>//****************************************************<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; getConnection()<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @return Connection<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static Connection getConnection() throws Exception<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dbUrl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ATM";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dbUser="sa";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dbPassword="37360379";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn=null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName(driver);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn=DriverManager.getConnection(dbUrl,dbUser,dbPassword);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return conn;<BR>&nbsp;&nbsp;&nbsp; }<BR>//**********************************************************<BR>&nbsp;&nbsp;&nbsp; /** <BR>&nbsp;&nbsp;&nbsp;&nbsp; * closeConnection() <BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static void closeConnection(Connection conn) throws Exception<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(conn!=null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>//************************************************************<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * executeUpdate()<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @return int<BR>&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static int executeUpdate(String sql) throws Exception<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn=null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt=null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn=getConnection();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt=conn.createStatement();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count=stmt.executeUpdate(sql);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closeConnection(conn);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return count;<BR>&nbsp;&nbsp;&nbsp; }<BR>//***************************************************************<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * executeQuery()<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @return List<BR>&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static List executeQuery(String sql) throws Exception<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list=new ArrayList();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn=null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt=null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSet rs=null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn=getConnection();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt=conn.createStatement();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs=stmt.executeQuery(sql);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSetMetaData rsmd=rs.getMetaData();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(rs.next())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map map=new HashMap();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=1;i&lt;=rsmd.getColumnCount();i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.put(rsmd.getColumnName(i),rs.getObject(i));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.add(map);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(rs!=null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closeConnection(conn);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return list;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 从查询结果List中取值,其中i为List中的第i条记录<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param list<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param column_name<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param i<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @return<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static String getValues(List list,String column_name,int i)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ((Map)list.get(i)).get(column_name).toString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "";<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 从查询结果List中取值,此函数适合于查询结果只有一条的情况,此为i值为0的特殊情况<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param list<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @param column_name<BR>&nbsp;&nbsp;&nbsp;&nbsp; * @return<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static String getValues(List list,String column_name)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ((Map)list.get(0)).get(column_name).toString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "";<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; <BR>}</P>
<P>////1.对于insert, update, delete语句int count = DbWrapper.executeUpdate(sql);<BR>////2.对于selete语句<BR>//java.util.List list = DbWrapper.executeQuery(sql);<BR>////方法一:按名字取值，注意大小写是严格区分的<BR>//for ( int i = 0; i &lt; list.size(); i++ )<BR>//{<BR>// java.util.Map map = (java.util.Map)list.get(i);<BR>// out.println(map.get("column_name").toString());<BR>//} <BR>////方法二：遍历取值<BR>//for ( int i = 0; i &lt; list.size(); i++ )<BR>//{<BR>// java.util.Map map = (java.util.Map)list.get(i);<BR>// for (java.util.Iterator it = map.keySet().iterator(); it.hasNext();) <BR>// {<BR>//&nbsp;&nbsp;&nbsp;&nbsp; String column_name = it.next().toString());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 取值时注意null判断<BR>//&nbsp;&nbsp;&nbsp;&nbsp; out.println(column_name + " = " + map.get(column_name)&nbsp; == null ? "" : map.get(column_name).toString());<BR>// }<BR>//} </P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P><BR>&nbsp;</P><img src ="http://www.blogjava.net/javainthinking/aggbug/6932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javainthinking/" target="_blank">熊炼的个性空间和java学习之旅</a> 2005-06-30 11:34 <a href="http://www.blogjava.net/javainthinking/articles/6932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat5配置Mssql JDBC数据库连接池 </title><link>http://www.blogjava.net/javainthinking/articles/5050.html</link><dc:creator>熊炼的个性空间和java学习之旅</dc:creator><author>熊炼的个性空间和java学习之旅</author><pubDate>Sun, 22 May 2005 05:23:00 GMT</pubDate><guid>http://www.blogjava.net/javainthinking/articles/5050.html</guid><wfw:comment>http://www.blogjava.net/javainthinking/comments/5050.html</wfw:comment><comments>http://www.blogjava.net/javainthinking/articles/5050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javainthinking/comments/commentRss/5050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javainthinking/services/trackbacks/5050.html</trackback:ping><description><![CDATA[<DIV class=postTitle><A href="http://blog.csdn.net/arielxp/archive/2004/09/28/119550.aspx">Tomcat5配置Mssql JDBC数据库连接池</A> </DIV>
<DIV class=postText>
<P>&nbsp; 如果只是对MsSql感兴趣可以照抄这篇短文，如果想配置其他数据库类型的连接池，也可以做简单修改参数即可使用。 </P>
<P>1、&nbsp; 使用Tomcat的Web管理应用配置数据源</P>
<P>&nbsp;&nbsp; 启动Tomcat服务器，打开浏览器，输入<A href="http://localhost:8080/admin/">http://localhost:8080/admin/</A>（其中localhost可能是一台机器的IP或是服务器名称），进入管理界面的登陆页面，这时候请输入原来安装时要求输入的用户名和密码，登陆到管理界面，</P>
<P>**********************************************************************************<BR>&nbsp;&nbsp;&nbsp; 选择Resources－Data sources进入配置数据源界面，选择Data Source Actions －&gt;选择Create New Data Source,进入配置详细信息界面，内容如下：<BR>***********************************************************************************<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JNDI Name:&nbsp;&nbsp;&nbsp; jdbc/mssql<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Data Source URL:&nbsp; jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=FileManagerMent<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBC Driver Class:&nbsp;com.microsoft.jdbc.sqlserver.SQLServerDriver <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User Name:&nbsp;&nbsp;&nbsp;&nbsp;sa<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37360379<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Max. Active Connections:&nbsp;&nbsp;&nbsp; 4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Max. Idle Connections:&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Max. Wait for Connection:&nbsp;&nbsp;&nbsp; 5000<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Validation Query:&nbsp;&nbsp; </P>
<P>要求输入的JNDI Name等信息，其中除了JDBC DriverClass之外，其他的可以根据你的需要填写。比如Data Source URL的内容可能是：jdbc:mysql:// IP或是名称/DataBaseName，其中DataBaseName是你的数据库名称，IP是你的数据库的所在的服务器的IP或是名称。最后点击Save－&gt;Commit Change.这样你的数据源的基本资料配置一半了。</P>
<P><BR>2、&nbsp; web.xml和%TOMCAT_HOME%\conf\Catalina\localhost下对应你的引用的配置文件修改</P>
<P>通过文件夹导航到%TOMCAT_HOME%\conf，打开web.xml,在&lt;/web-app&gt;的前面添加以下内容：</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;resource-ref&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;DB Connection&lt;/description&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;res-ref-name&gt;jdbc/mssql&lt;/res-ref-name&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;res-auth&gt;Container&lt;/res-auth&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/resource-ref&gt;</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp; 注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。 </P>
<P>通过文件夹导航到%TOMCAT_HOME%\conf\Catalina\localhost下，找到你的web应用对应的.xml文件，如&nbsp;&nbsp;&nbsp; ROOT.xml，并在此文件的下添入代码：</P>
<P>&lt;ResourceLink name="jdbc/mssql" global="jdbc/mssql" type="javax.sql.DataSourcer"/&gt;</P>
<P>&nbsp;到这里，配置工作就基本完成了。</P>
<P>&nbsp;</P>
<P>3、&nbsp; 其他注意事项</P>
<P>别忘了JDBC驱动程序.jar一定要放置到Tomcat的对应目录,你的JDBC驱动可能版比笔者高，不过只要能与所使用的MsSql对应就可以了，建议放置在%TOMCAT_HOME%\common\lib和应用的WEB-INF\lib下。两者有什么不同呢？其实一看就明白了，common\li是所有的应用都可以使用的库文件位置。</P>
<P>重启你的Tomcat服务。</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>4、&nbsp; 编写测试代码</P>
<P>在应用的目录下建立一个Test.jsp文件，代码如下：</P>
<P>&lt;!doctype html public "-//w3c//dtd html 4.0 transitional//en" </P>
<P>"<A href="http://www.w3.org/TR/REC-html40/strict.dtd">http://www.w3.org/TR/REC-html40/strict.dtd</A>"&gt;</P>
<P>&lt;%@ page import="java.sql.*"%&gt;<BR>&lt;%@ page import="javax.sql.*"%&gt;<BR>&lt;%@ page import="javax.naming.*"%&gt;<BR>&lt;%@ page session="false" %&gt;</P>
<P>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<BR>&lt;title&gt;&lt;/title&gt;<BR>&lt;%&nbsp;<BR>&nbsp;&nbsp; DataSource ds = null;<BR>&nbsp;&nbsp; try{<BR>&nbsp;&nbsp; InitialContext ctx=new InitialContext();<BR>&nbsp;&nbsp; ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mssql");<BR>&nbsp;&nbsp; Connection conn = ds.getConnection();<BR>&nbsp;&nbsp; Statement stmt = conn.createStatement();<BR>&nbsp;&nbsp; String strSql = " select * from users";<BR>&nbsp;&nbsp; ResultSet rs = stmt.executeQuery(strSql);<BR>&nbsp;&nbsp;<BR>&nbsp; while(rs.next())<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print(rs.getString(1));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp; catch(Exception e)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp; }<BR>%&gt;</P>
<P>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</P>
<P>运行结果：<BR>在控制台会看到你想要看到的结果。</P>
<P>5、&nbsp; 总结</P>
<P>配置过程及其简单明了，这些配置免除了以往开发人员自己动手写数据源连接池的痛苦，这也是对开发过程的有力支持。<BR><BR>本文参考了！Java Blog上的2篇文章，发现一个问题，有待考究。原文连接如下：<BR><A href="http://blog.csdn.net/arielxp/archive/2004/09/28/119550.aspx">http://blog.csdn.net/arielxp/archive/2004/09/28/119550.aspx</A><BR><A href="http://blog.csdn.net/arielxp/archive/2004/10/04/124557.aspx">http://blog.csdn.net/arielxp/archive/2004/10/04/124557.aspx</A><BR><BR>问题如下：<BR>此文中*******比较里面的内容如果改为如下：<BR>*************************************************************************<BR>Tomcat Server&gt;&gt;&gt;Service&gt;&gt;&gt;Host&gt;&gt;&gt;你的Webapp的Context&gt;&gt;&gt;Resources&gt;&gt;&gt;Data Sources<BR>***************************************************************************<BR>是否真的可以完全省略第2步的操作！<IMG height=19 src="http://www.blogjava.net/Emoticons/omg_smile.gif" width=19 border=0>换句话说，这种可视化操作能自动完成第二步？</P></DIV><img src ="http://www.blogjava.net/javainthinking/aggbug/5050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javainthinking/" target="_blank">熊炼的个性空间和java学习之旅</a> 2005-05-22 13:23 <a href="http://www.blogjava.net/javainthinking/articles/5050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>