最高分求救:一个JAVABEAN+JSP的错误

idohim 2001-11-14 04:00:16
正在学JAVA,可身边没有老师,望各位大虾,不吝赐教。
正在用jsp+javabean做一个bbs
文件一dbjsp.java,这个文件应该没错误
package bbs;
import java.sql.*;
import java.lang.String;

public class dbjsp {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:jsp";
Connection conn = null;
ResultSet rs = null;

public dbjsp() {
try {

Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("dbjsp(): " + e.getMessage());
}
}

public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr,"lijian","123456");
Statement stmt = conn.createStatement();

rs = stmt.executeQuery(sql);

{
}
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}

public void update(String sql){

try {
conn = DriverManager.getConnection(sConnStr,"lijian","123456");
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}

}
}

文件二bbs.java编译没有错误
用了一个递归调用
package bbs;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import bbs.*;
import java.net.*;
import java.io.*;
import java.text.*;
public class bbs
{
public static String subtitle(int cid,String ns,String str,int pages)throws Exception{
String sql;
ResultSet rs=null;
sql="select * from bbs where pid="+cid+" order by bbs_id desc";
dbjsp conn=new dbjsp();
rs=conn.executeQuery(sql);
String backstr=str;
String nblank=ns+"    ";
while(rs.next()){
int bbsid=rs.getInt("bbs_id");
String title=rs.getString("title");
String author=rs.getString("author");
String dates=rs.getString("content");
int counter=rs.getInt("counter");
backstr=backstr+"<tr><td>"+nblank+"<a href=answer.jsp?pid="+bbsid+"&pages="+pages+">"+title+"</a></td>";
backstr=backstr+"<td>"+author+"</td><td>"+counter+"</td></tr>";

backstr=subtitle(bbsid,nblank,backstr,pages);

}
rs.close();
return backstr;
}
}

文件三bbs.jsp显示帖子的页面


<%@ page language="java" import="java.sql.*" %>
<%@ page import="java.net.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html;charset=gb2312">
<TITLE> kehudiaocha</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

<jsp:useBean id="DBconn1" scope="page" class="bbs.dbjsp"/>
<jsp:useBean id="bbs" scope="page" class="bbs.bbs"/>
<%
int count=0;
int pagecount=0;
int pages=0;
int pagesize=3;
ResultSet RS=DBconn1.executeQuery("select * from bbs where pid is

null");
while(RS.next()){
count++;
}
RS.close();
if(count%pagesize==0)pagecount=count/pagesize;
else pagecount=count/pagesize+1;
String strpages=request.getParameter("pages");
if(strpages==null)pages=1;
else{
pages=new Integer(strpages).intValue();
if(pages<=0)pages=1;
}

ResultSet pRS=DBconn1.executeQuery("select * from bbs where pid is

null order by bbs_id desc");
int i;
for(i=1;i<=(pages-1)*pagesize;i++){pRS.next();}

for(i=1;i<=pagesize;i++){
if(pRS.next()){%>
<%int counter=pRS.getInt("counter");
int bbsid=pRS.getInt("bbs_id");
out.print(bbsid);%>

<a

href="view.jsp?bbs_id=<%=bbsid%>"><%out.print(pRS.getString("title"));%

></a>
<%out.print(pRS.getString("author"));%>

<br>
<%//递归显示当前文章的所有子文章,估计就是这一块有错
String nb=" ";
String nstr="";
String htmlstr=bbs.subtitle(bbsid,nb,nstr,pages);
out.println(htmlstr);
%>
<% }
else{
break;
}
}
pRS.close();
%>
totle:<%=count%>
<%
if(pages<=1){%>
首页 上一页 
<%
}
else{
%>
<a href=bbs.jsp?pages=1>首页</a> 
<a href=bbs.jsp?pages=<%=(pages-1)%>>上一页</a> 

<%
}
if(pages>=pagecount){
%>
下一页 尾页 
<%
}
else{
%>
<a href=bbs.jsp?pages=<%=(pages+1)%>>下一页</a> 
<a href=bbs.jsp?pages=<%=pagecount%>>尾页</a> 
<%
}
%>
<br>
<a href="post.jsp">发表文章</a>
</BODY>
</HTML>

文件四:出错页面

500 Servlet Exception
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]郒勏?"
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3171)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5317)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:548)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:566)
at _bbs._bbs__jsp._jspService(/bbs/bbs.jsp:42)
at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
at com.caucho.jsp.JavaPage.subservice(JavaPage.java:81)
at com.caucho.jsp.Page.service(Page.java:407)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:166)
at com.caucho.server.http.Invocation.service(Invocation.java:273)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:484)


--------------------------------------------------------------------------------
Resin 2.0.0 (built Fri Jun 8 12:04:24 PDT 2001)
...全文
119 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
idohim 2001-11-19
散分了
回复
tehcon 2001-11-16
backstr没定义,或者是拼写错误?
回复
idohim 2001-11-16
没有人会呀??
回复
idohim 2001-11-16
to:badtank(坦克)我已经改好了,谢谢.
TO:yingjunyu(yingjunyu)谢谢你的提醒,最后就是因为我取值的次序不对.
neverhlt(感谢上帝)说的也没错
BBS.JAVA的代码改完后是:
package bbs;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import bbs.*;
import java.net.*;
import java.io.*;
import java.text.*;
public class bbs
{
public static String subtitle(int cid,String ns,String str,int pages){
String sql;
ResultSet rs=null;
String backstr=str;
String nblank=ns+"    ";
try{
sql="select * from bbs where pid="+cid+" order by bbs_id desc";
dbjsp conn=new dbjsp();
rs=conn.executeQuery(sql);


while(rs.next()){
int bbsid=rs.getInt("bbs_id");
String title=rs.getString("title");
String dates=rs.getString("content");
String author=rs.getString("author");

int counter=rs.getInt("counter");
backstr=backstr+"<tr><td>"+nblank+"<a href=answer.jsp?pid="+bbsid+"&pages="+pages+">"+title+"</a></td>";
backstr=backstr+"<td>"+author+"</td><td>"+counter+"</td></tr>";

backstr=subtitle(bbsid,nblank,backstr,pages);

}

rs.close();

}

catch(SQLException ex) {
System.err.println("data: " + ex.getMessage());
}
return backstr;

}
}
谢谢大家,每个人都有分
我的QQ:18696264
时间来不及了,周一再散分
回复
idohim 2001-11-16
to:badtank(坦克)我已经改好了,谢谢.
TO:yingjunyu(yingjunyu)谢谢你的提醒,最后就是因为我取值的次序不对.
neverhlt(感谢上帝)说的也没错
BBS.JAVA的代码改完后是:
package bbs;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import bbs.*;
import java.net.*;
import java.io.*;
import java.text.*;
public class bbs
{
public static String subtitle(int cid,String ns,String str,int pages){
String sql;
ResultSet rs=null;
String backstr=str;
String nblank=ns+"    ";
try{
sql="select * from bbs where pid="+cid+" order by bbs_id desc";
dbjsp conn=new dbjsp();
rs=conn.executeQuery(sql);


while(rs.next()){
int bbsid=rs.getInt("bbs_id");
String title=rs.getString("title");
String dates=rs.getString("content");
String author=rs.getString("author");

int counter=rs.getInt("counter");
backstr=backstr+"<tr><td>"+nblank+"<a href=answer.jsp?pid="+bbsid+"&pages="+pages+">"+title+"</a></td>";
backstr=backstr+"<td>"+author+"</td><td>"+counter+"</td></tr>";

backstr=subtitle(bbsid,nblank,backstr,pages);

}

rs.close();

}

catch(SQLException ex) {
System.err.println("data: " + ex.getMessage());
}
return backstr;

}
}
谢谢大家,每个人都有分
我的QQ:18696264
时间来不及了,周一再散分
回复
KingRabbit 2001-11-16
我也不知道为什么
<jsp:useBean id="DBconn1" scope="page" class="bbs.dbjsp"/>
<jsp:useBean id="bbs" scope="page" class="bbs.bbs"/>
好像没有作用、。

把你的类打包后,设定classpath(在tomcat或其他发布软件)
然后用import语句在jsp中引进这些类,追加
dbjsp DBconn1 = new DBconn1()
可以运行。


如果有好办法,请告知兔子。
回复
yingjunyu 2001-11-16
resultset对象需要用一次开一次的,比如获得记录数需要一个,然后读记录需要一个,另外用rs.getxxx时字段是有一定次序的,不可能越过次序去获得字段值。
回复
badtank 2001-11-16
bbs.java的程序编译不过,检查一下。
在resin中,在web-inf\classes目录中的.java文件自动会被编译成.class文件。
回复
neverhlt2008 2001-11-15
据我的经验,最大的可能性是sqlserver与java之间的问题
问题出在select * from bbs 的*上,这一句的执行结果有一个默认的排列
假设为字段a, b, c
如果是rs.get(a),rs.get(b),rs.get(c)就没有问题
要是rs.get(b),rs.get(c)后再rs.get(a)就会有SQLException
建议不用select * 而把需要的字段按你需要的顺序查询出来
不然就要按标准的顺序取值了
回复
neverhlt2008 2001-11-15
据我的经验,最大的可能性是sqlserver与java之间的问题
问题出在select * from bbs 的*上,这一句的执行结果有一个默认的排列
假设为字段a, b, c
如果是rs.get(a),rs.get(b),rs.get(c)就没有问题
要是rs.get(b),rs.get(c)后再rs.get(a)就会有SQLException
建议不用select * 而把需要的字段按你需要的顺序查询出来
不然就要按标准的顺序取值了
回复
icey 2001-11-15
对于那些有异常抛出的方法,必须放在try{}catch{}的模块内使用
否则会报告出错
回复
skyyoung 2001-11-15
use try{}catch(SQLException e){}
回复
badtank 2001-11-15
数据库连接错误。
1、检查一下能够通过jdbcodbc正确连接上数据库
2、数据源设好了吗?
回复
idohim 2001-11-15
删除了bbs.java里的throws Exception,错误显示是这样:
500 Servlet Exception
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:21: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
while(rs.next()){
^
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:22: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
int bbsid=rs.getInt("bbs_id");
^
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:23: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
String title=rs.getString("title");
^
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:24: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
String author=rs.getString("author");
^
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:25: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
String dates=rs.getString("content");
^
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:26: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
int counter=rs.getInt("counter");
^
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:33: 未报告的异常 java.sql.SQLException ;必须被捕获或被声明抛出
rs.close();
^
7 个错误

回复
idohim 2001-11-15
to badtank(坦克)数据库没问题
to skyyoung(路人甲),icey(icey)我照你们说的做了,出现的错误是:
500 Servlet Exception
D:\resin\doc\WEB-INF\classes\bbs\bbs.java:42: 不能解析符号
符号:变量 backstr
位置:类 in bbs.bbs
return backstr;
^
1 个错误



--------------------------------------------------------------------------------
Resin 2.0.0 (built Fri Jun 8 12:04:24 PDT 2001)

我真是搞不懂了
回复
p9 2001-11-14
能否把出错页面弄清楚一些,别乱码
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2001-11-14 04:00
社区公告
暂无公告