.JSP通过数据源访问数据库时出错!!!!

lightmath 2007-09-13 06:32:35
我用的是Tomcat5.5,MySQL数据库。并且server.xml和web.xml文件也都从新设置了。
然后我把DbJsp.jsp放在webapps\bookstore\目录下。数据库也已经建好了,JDBC驱动程序也拷贝到了common\lib目录下。当我访问DbJsp.jsp时,弹出下面的提示:

Cannot create JDBC driver of class '' for connect URL 'null'

请大家帮我看看是怎么一回事?

DbJsp.jsp代码如下:
<!--首先导入一些必要的packages-->
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="com.mysql.jdbc.Connection"%>
<!--设置中文输出-->
<%@ page contentType="text/html; charset=GB2312" %>
<html>
<head>
<title>DbJsp1.jsp</title>
</head>
<body>
<%
//以try开始
try
{
java.sql.Connection con;
Statement stmt;
ResultSet rs;

//建立数据库连接
Context ctx = new InitialContext();
DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");
con = ds.getConnection();
//创建一个JDBC声明
stmt = con.createStatement();
//增加新记录
stmt.executeUpdate("INSERT INTO books (id,name,title,price) VALUES ('999','Tom','Tomcat Bible',44.5)");
//查询记录
rs = stmt.executeQuery("SELECT id,name,title,price from books");
//输出查询结果
out.println("<table border=1 width=400>");
while (rs.next())
{
String col1 = rs.getString(1);
String col2 = rs.getString(2);
String col3 = rs.getString(3);
float col4 = rs.getFloat(4);

//convert character encoding
col1=new String(col1.getBytes("ISO-8859-1"),"GB2312");
col2=new String(col2.getBytes("ISO-8859-1"),"GB2312");
col3=new String(col3.getBytes("ISO-8859-1"),"GB2312");

//打印所显示的数据
out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td><td>"+col4+"</td></tr>");
}
out.println("</table>");

//删除新增加的记录
stmt.executeUpdate("DELETE FROM books WHERE id='999'");

//关闭数据库连结
rs.close();
stmt.close();
con.close();
}

//捕获错误信息
catch (Exception e) {out.println(e.getMessage());}

%>
</body>
</html>
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lightmath 2007-09-18
  • 打赏
  • 举报
回复
解决了,借助Tomcat-doc帮助文档,多多查几遍.
自力更生,毛爷爷说的话真的很管用啊
lightmath 2007-09-16
  • 打赏
  • 举报
回复
这个问题不难吧,怎么没人回答啊?
javabeginner2006 2007-09-14
  • 打赏
  • 举报
回复
是tomcat中配置文件出错了.
你应该是把连接字符串写在 项目名.xml文件中了吧.
你去检查下,把什么文件的副本删除,还有server.xml中是否有和 项目名.xml文件 冲突的部分.
其实你把 项目名.xml文件编辑好了以后,当项目一运行是,你再去看看 项目名.xml文件,是不是被还原了????

我以前也有过这样的情况,不知道你的是不是这个问题???
lightmath 2007-09-14
  • 打赏
  • 举报
回复
aksl31
谢谢你的回答,不过你搞错了 ,我遇到的是.JSP文件通过 数据源 访问数据库时出现的问题。
你回答的是通过JDBC驱动程序访问数据库,并且用的是SQLServer数据库。
尽管这样,我还是谢谢你的热心帮助。
java.sql.Connection con
Connection con=ds.getConnection() 通过DataSource的getConnection()方法获得数据库连接对象Connection
lightmath 2007-09-14
  • 打赏
  • 举报
回复
以下是我的配置文件web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC
'-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
'http://java.sun.com/j2ee/dtds/web-app_2_3.dtd'>

<web-app>

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/BookDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>
好象没你说的啊
server.xml文件中加了以下东西
<Context path="/bookstore" docBase="bookstore" debug="0"
reloadable="true">


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


<ResourceParams name="jdbc/BookDB">
<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>dbuser</value>
</parameter>
<parameter>
<name>password</name>
<value>1234</value>
</parameter>

<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>

<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
</parameter>
</ResourceParams>

</Context>
aksl31 2007-09-13
  • 打赏
  • 举报
回复
数据源配置不对,你这个java.sql.Connection con连得是个啥玩意,以下是JSP连一个SQLSERVER数据源的代码,我上手时用的,你对照看就明白了

<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

String url="jdbc:microsoft:sqlserver://192.168.1.55:1433;DatabaseName=TEXT";

String user="TEXT";

String password="1234";

Connection conn= DriverManager.getConnection(url,user,password);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql=" select * from TEXT ";
ResultSet rs=stmt.executeQuery(sql);

rs.next();

out.println("<TD>" + rs.getString("no") + "</TD>");
out.println("<TD>" + rs.getString("name") + "</TD>");
out.println("<TD>" + rs.getString("sex") + "</TD>");
out.println("<TD>" + rs.getString("pay") + "</TD>");
out.println("<TD>" + rs.getString("age") + "</TD>");
out.println("<TD>" + rs.getString("remarks") + "</BR>");

String no2 = rs.getString("no") ;
String name2 = rs.getString("name") ;
String sex2 = rs.getString("sex") ;
int pay2 = rs.getInt("pay") ;
int age2 = rs.getInt("age") ;
String remarks2 = rs.getString("remarks") ;

rs.close();
stmt.close();
conn.close();
%>

81,094

社区成员

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

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