Topic: 关于数据库连结池的问题?

  Print this page

1.关于数据库连结池的问题? Copy to clipboard
Posted by: sun7bear
Posted on: 2006-05-06 19:55

<!--测试数据源-->
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>

<%
DataSource ds = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
//从Context中lookup数据源。
ds = (DataSource)envCtx.lookup("jdbc/DBPool");
  if(ds!=null)
  {
  out.println("已经获得DataSource!");
  out.println("<br>");
  Connection conn = ds.getConnection();
  Statement stmt=conn.createStatement();
  ResultSet rst=stmt.executeQuery("select * from book");
  out.println("以下是从数据库中读取出来的数据");
  while(rst.next())
  {
  out.println("bookName:"+rst.getString("bookName"));
  out.println("<br>");  
  }
  }
  else
   out.println("连接失败!");
  }
  catch(Exception ne)
  {
   out.println(ne);
  }
%>
我用如上jsp文件连接到mssql2000,结果显示如下错误
已经获得DataSource!
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)
已经获得数据源,但为什么不能取的mssql2000中的数据呢?

2.Re:关于数据库连结池的问题? [Re: sun7bear] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-05-06 23:18

实例讲解:使用连接池连接MS SQL SERVER 2000

连接MS SQL SERVER 2000时要把msbase.jar,mssqlserver.jar,msutil.jar三个文件复制到%Tomcat 5.0%\common\lib中,这是它的驱动程序,然后要设定Tomcat的server.xml,它位于%Tomcat 5.0%\conf\server.xml,需要建立一个站点,代码如下:添加到server.xml中的</host>前面。

<Context path="\Project" reloadable="true" docBase="Project">

<Resource name="jdbc/Project" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/Project">

<parameter>

<name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

</parameter>

<parameter>

<name>maxActive</name>

<value>100</value>

</parameter>

<parameter>

<name>maxIdle</name>

<value>30</value>

</parameter>

<parameter>

<name>maxWait</name>

<value>10000</value>

</parameter>

<parameter>

<name>username</name>

<value>sa</value>

</parameter>

<parameter>

<name>password</name>

<value>sunjavaduke</value>

</parameter>

<parameter>

<name>driverClassName</name>

<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

</parameter>

<parameter>

<name>url</name>

<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Project;user=sa;password=sunjavaduke;</value>

</parameter>

</ResourceParams>

</Context>





server.xml配置完成之后,就可以对数据库进行操作了,具体代码如下:

<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*,javax.naming.*,javax.sql.*" errorPage="" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=gb2312">

<title>连接池连接MS SQL SERVER 2000<title>

</head>

<body>

<%

out/print("使用连接池连接MS SQL SERVER 2000<br>");

out.println("<br>");

Context ctx=null;

DataSource ds=null;

Statment stmt=null;

ResultSet rs=null;

Connection con=null;

ResultSetMetaData md=null;

try{

ctx=new InitialContext();

ds=(DataSource)ctx.lookup("java:comp/env/jdbc/Project");

con=ds.getConnection();

stmt=con.createStatment();

rs=stmt.excuteQuery("select * from Test");

md=rs.getMetaData();

out.print(md.getColumnLabel(1)+" ");

out.print(md.getColumnLabel(2)+"<br>");

while(rs.next()){

out.print(rs.getInt(1)+" ");

out.print(rs.getString(2)+"<br>");

}

}catch(Exception e){

out.print(e);

}finally{

if(rs!=null) rs.close();

if(stmt!=null) stmt.close();

if(con!=null) con.close();

}

%>

</body>

</html>

3.Re:关于数据库连结池的问题? [Re: sun7bear] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-05-06 23:19

希望对你有些帮助。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923