JSP连接数据源报这种错原因出在哪儿呀,急在线等!
%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'
请问高手们问题出在哪儿呀?
问题点数:10、回复次数:6Top
1 楼iriver103(至尊玉)回复于 2006-03-17 12:58:17 得分 0
更正:out.println("1-->"+e);Top
2 楼mudboy()回复于 2006-03-17 13:26:13 得分 5
需要在你的${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>
Top
3 楼iriver103(至尊玉)回复于 2006-03-19 13:47:09 得分 0
不是那个问题呀楼上兄弟
因为显示已经获得了数据源
只是无法获得连接
不知怎么回事Top
4 楼billlion(小胖)回复于 2006-03-21 13:53:14 得分 5
你好像没有导入JDBC的驱动程序吧?先把jdbc驱动放到你的项目的lib文件夹,然后用class.forname()导入。
例如:
Class.forName(OracleJDBCDriver).newInstance();
试试行不行。Top
5 楼iriver103(至尊玉)回复于 2006-03-23 12:59:40 得分 0
还是不行呀!
我用的是数据源进行连接Top
6 楼iriver103(至尊玉)回复于 2006-03-23 22:50:19 得分 0
好了好了,原来是少了两个包
commons-collection包
和
commons-pool包Top




