关于数据库连接池问题请教

一意孤行114 2008-04-10 09:16:05
请高手帮忙看一下,我都折腾好几天了!!!

我建立了一个普通查找数据源并访问连接,测试成功,但是当我把查找资料源和访问连接的操作封装成一个工具类后,测试就失败,每次报下面的错误:
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 10 in the jsp file: /ch16/conpool.jsp
DatabaseConn cannot be resolved
7: <%@ page import="java.sql.*"%>
8: <%
9: Connection conn=null;
10: conn = DatabaseConn.getConnection();
11: Statement stmt=conn.createStatement();
12: ResultSet rst=stmt.executeQuery("select * from book");
13: out.println("以下是从数据库中读取出来的数据");


下面是测试失败的代码:

1.建立一个数据库连接工具类DatabaseConn.java

package com.jspdev.util;

import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
public static synchronized Connection getConnection() throws Exception
{
try
{

Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/testdb");
return ds.getConnection();
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
throw e;
}

}

}


2.建立一个jsp页面
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="com.jspdev.util.*"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%
Connection conn=null;
conn = DatabaseConn.getConnection();
Statement stmt=conn.createStatement();
ResultSet rst=stmt.executeQuery("select * from book");
out.println("以下是从数据库中读取出来的数据");
while(rst.next())
{
out.println("name:"+rst.getString("name"));
out.println("<br>");
}
%>



但我用下面代码测试,则可以成功:

<!--测试数据源-->
<%@ 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/testdb");
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);
}
%>
...全文
52 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
一意孤行114 2008-04-10
  • 打赏
  • 举报
回复
这是个数据库连接工具类:DatabaseConn.java

package com.jspdev.util;

import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
public static synchronized Connection getConnection() throws Exception
{
try
{

Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/testdb");
return ds.getConnection();
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
throw e;
}

}

}


不知道这个类有什么问题,还忘指点,谢谢
wuy13862574600 2008-04-10
  • 打赏
  • 举报
回复
conn = DatabaseConn.getConnection();

DatabaseConn这个是个什么类?
应该是错在这里了

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧