访问access数据库,为什么会出现如下错误?

guitay 2005-03-07 04:02:16
我用的是eclipse2.1.3+lomboz2.1.3+tomcat5.0.30,练习写了一个访问access数据库的东西,为什么会出现如下错误?相同的bean,相同的jsp页,用jb却可以运行正常!! 到底是为什么?
tomcat5.0.30出错

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: No data found
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.index_jsp._jspService(index_jsp.java:110)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.sql.SQLException: No data found
sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7139)
sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3908)
sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5702)
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:356)
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:413)
org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.30

DbOperation bean的代码:
/*
* Created on 2005-3-5
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package h;

import java.sql.*;
//import java.io.*;

/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class DbOperator {
String error;//错误信息
Connection con;
public DbOperator() {}
//连接数据库
public void connect()throws ClassNotFoundException,SQLException,Exception
{
try
{
//装载jdbcod驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//创建一个连接至数据源的连接
con = DriverManager.getConnection("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=D:/guitay/intopjsp/h/exam.mdb","","");
}
catch(ClassNotFoundException cnfe)
{
error = "ClassNotFoundException:不能locate数据库驱动";
throw new ClassNotFoundException(error);
}
catch(SQLException cnfe)
{
error = "SQLException:不能连接到数据库!!";
throw new SQLException(error);
}
catch(Exception e)
{
error = "Exception:一个不知名的错误!!";
throw new Exception(error);
}
} //end of connect
//关闭数据库
public void disConnect()throws SQLException
{
try
{
if(con != null)
{
//关闭数据库
con.close();
}
}
catch(SQLException sqle)
{
error="SQLException:无法关闭数据库连接!!";
throw new SQLException(error);
}
}
//返回结果集
public ResultSet viewResultSet(String queryString)throws SQLException,Exception
{
ResultSet rs = null;
try
{
Statement stmt = con.createStatement();
rs = stmt.executeQuery(queryString);
}
catch(SQLException sqle)
{
error = "SQLException:不能execute查询!!";
throw new SQLException(error);
}
catch(Exception e)
{
error = "Exception:不知名的错误!!";
throw new Exception(error);
}
return rs;
}//end of viewResultSet
//增加用户
public void addUser(String name ,String passWord)throws SQLException,Exception
{
if(con != null)
{
try
{
PreparedStatement updateUsers;
String s = new String ("insert into user values(?,?)");

updateUsers = con.prepareStatement(s);
updateUsers.setString(1,name);
updateUsers.setString(2,passWord);
updateUsers.execute();
}
catch(SQLException sqle)
{
error = "SQLException:更新错误!!!";
throw new SQLException (error);
}
}
else
{
error = "Exception:连接到数据库出错!!";
throw new Exception(error);
}
}
}
jsp页代码:
<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<%@ page contentType="text/html; charset=GBK" %>
<%@ page language = "java"import="java.sql.*"%>
<jsp:useBean id="dd" scope="session" class="h.DbOperator"/>
<html>
<head>
<title>Welcome---显示记录</title>
</head>
<body>
<form action="delete.jsp" method="post">
<table border="1">
<tr>
<td bgcolor="#99FFFF">选择</td>
<td>姓名</td>
<td bgcolor="#99FFFF">密码</td>
</tr>
<%
dd.connect();
ResultSet rs=dd.viewResultSet("select *from user");
while(rs.next())
{
String name = rs.getString("name");
%>

<tr>
<td bgcolor="#99FFFF">
<input type="checkbox" name="primarykey" value="<%=rs.getString("name")%>"/></td>
<td><%=rs.getString("name")%></td>
<td bgcolor="#99FFFF"><%=rs.getString("password")%></td>
</tr> <%}%>
<%
rs.close();
dd.disConnect();
%>
</table>

<input type="submit" name="submit" value="删除记录!"/>
<a href="input.jsp">添加记录!</a>
</form>
</body>
</html>

结决问题马上结帖!!
...全文
142 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tom2005 2005-03-07
  • 打赏
  • 举报
回复
改了以后应该还有问题
tom2005 2005-03-07
  • 打赏
  • 举报
回复
正确
<td><%=rs.getString("name")%></td>

错误
<td><%=rs.getString("name")%></td>
<td><%=rs.getString("name")%></td>

连续对同一字段读取两次以上就会出错!
所保错误也是:
javax.servlet.ServletException: No data found
java.sql.SQLException: No data found

重复读数据是错误的;读取的顺序不对也是错误的,你用的驱动程序不支持或者你打开记录集时设置的参数不正确
guitay 2005-03-07
  • 打赏
  • 举报
回复
OK!!!!!!!
谢谢了!!
你能告诉我为什么吗?
马上给分!
pigo 2005-03-07
  • 打赏
  • 举报
回复
dd.viewResultSet("select *from user");


---------->

dd.viewResultSet("select * from user");

那个星号后面没有空格,语句不正确。

awaysrain 2005-03-07
  • 打赏
  • 举报
回复
改成这样试试
-------------------------------------------

<%
dd.connect();
ResultSet rs=dd.viewResultSet("select *from user");
while(rs.next())
{
String name = rs.getString("name");
String password = rs.getString("password");

%>

<tr>
<td bgcolor="#99FFFF">
<input type="checkbox" name="primarykey" value="<%=name%>"/></td>
<td><%=name%></td>
<td bgcolor="#99FFFF"><%=password%></td>
</tr> <%}%>
<%
rs.close();
dd.disConnect();
%>
awaysrain 2005-03-07
  • 打赏
  • 举报
回复
呵呵,抱歉,刚才没仔细看你的代码
请看这里
http://forum.java.sun.com/thread.jspa?threadID=601134&messageID=3220658
guitay 2005-03-07
  • 打赏
  • 举报
回复
会不会是我tomcat的配置的问题!
因为,jbX用的是它自带的tomcat4.
guitay 2005-03-07
  • 打赏
  • 举报
回复
还是不行!!!
awaysrain 2005-03-07
  • 打赏
  • 举报
回复
ResultSet rs=dd.viewResultSet("select *from user");
-->
ResultSet rs=dd.viewResultSet("select *from [user]");

这样看看可以不?

81,092

社区成员

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

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