JSP连接数据源报这种错原因出在哪儿呀,急在线等!

iriver103 2006-03-17 12:56:33
%TOMCAT_HOME%/conf/server.xml中Context元素如下:

<Context path="/ch13_jdbc" docBase="D:/MyPrj/ch13_jdbc/ch13_jdbc" debug="0" reloadable="true" crossContext="true">
<Resource name="jdbc/bn" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/bn">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</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=jspdev</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
</ResourceParams>
</Context>

连接此数据源的JSP代码如下:

<%@page contentType="text/html; charset=gb2312"%>
<%@page import="javax.naming.Context,javax.sql.DataSource,java.sql.*,javax.naming.InitialContext"%>
<%
DataSource ds=null;
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
//从Context中loolup数据源
ds=(DataSource)envCtx.lookup("jdbc/bn");
if(ds!=null){
out.println("已经获得数据源:"+ds.toString()+"<p>");
Connection con=ds.getConnection();
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from book");
out.println("以下是从数据库中读取出来的数据:<br>");
while(rs.next()){
out.println("bookName:"+rs.getString("bookName")+"<br>");
}
}
else{
out.println("连接数据源失败!");
}
}
catch(Exception e){
out.println(e);
e.printStackTrace();
}
%>

%TOMCAT_HOME%/commons/lib下的jar包也没有问题
运行结果在页面上显示:
已经获得数据源:org.apache.tomcat.dbcp.dbcp.BasicDataSource@cafb56

1-->org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

请问高手们问题出在哪儿呀?
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iriver103 2006-03-23
  • 打赏
  • 举报
回复
还是不行呀!
我用的是数据源进行连接
iriver103 2006-03-23
  • 打赏
  • 举报
回复
好了好了,原来是少了两个包
commons-collection包

commons-pool包
billlion 2006-03-21
  • 打赏
  • 举报
回复
你好像没有导入JDBC的驱动程序吧?先把jdbc驱动放到你的项目的lib文件夹,然后用class.forname()导入。
例如:
Class.forName(OracleJDBCDriver).newInstance();

试试行不行。
iriver103 2006-03-19
  • 打赏
  • 举报
回复
不是那个问题呀楼上兄弟
因为显示已经获得了数据源
只是无法获得连接
不知怎么回事
iriver103 2006-03-17
  • 打赏
  • 举报
回复
更正:out.println("1-->"+e);
mudboy 2006-03-17
  • 打赏
  • 举报
回复
需要在你的${tomcat_home}\conf\Catalina\localhost增加一个与你上下文名字一样的XML文件,如:TraFuse.xml
用了数据源的话,里面要有类似如下的内容:
<Context docBase="TraFuse" path="/TraFuse">
<ResourceLink global="jdbc/bn" name="jdbc/bn" type="javax.sql.DataSource"/>
</Context>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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