从数据库中读取数据的问题

bluefish1218 2002-03-22 09:17:36
各位大侠救我
我用的是sqlserver2000,驱动是JDBC for sql2k,做了一个连接db的的bean,连接数据库没问题,然后我通过以下代码去提取数据:
<% ResultSet rs,rs1;
String sBBS,sKCName="";
String sql="select * from article order by shijian DESC";
rs=CommonDBBean.executeQuery(sql);
while(rs.next()){
sBBS=rs.getString("forum");
sql="select kechengname from kecheng_new where bbs='"+sBBS+"'";
rs1=CommonDBBean.executeQuery(sql);
if(rs1.next()){
sKCName=rs1.getString("kechengname");
}
%>
<tr><td align="left" height="19">◆<%=rs.getString("title")%></a><BR><font color="#bbbbbb"><%=sKCName%></font><br></td></tr>
<%
}
%>
然后报了以下的错:
500 Servlet Exception
java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]ResultSet can
not re-read row data for column 3.
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateColumnIndex(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at _forum._body__jsp._jspService(/forum/body.jsp:118)
at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
at com.caucho.jsp.Page.subservice(Page.java:485)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:179)
at com.caucho.server.http.Invocation.service(Invocation.java:288)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
at com.caucho.server.http.QRequestDispatcher.include(QRequestDispatcher.java:344)
at com.caucho.server.http.QRequestDispatcher.include(QRequestDispatcher.java:251)
at com.caucho.jsp.QPageContext.include(QPageContext.java:484)
at _forum._index__jsp._jspService(_index__jsp.java:28)
at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
at com.caucho.jsp.Page.subservice(Page.java:485)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:179)
at com.caucho.server.http.Invocation.service(Invocation.java:288)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
at com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:937)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213)
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.5 (built Fri Jan 11 08:29:05 PST 2002)

然后把代码改成如下:
<% ResultSet rs,rs1;
String sBBS,sKCName="";
String sql="select * from article order by shijian DESC";
rs=CommonDBBean.executeQuery(sql);
while(rs.next()){
%>
<tr><td align="left" height="19">◆<%=rs.getString("title")%></a><BR><font color="#bbbbbb"><%=sKCName%></font><br></td></tr>
<%
}
%>
能检索出数据,但是全是乱码。
我在开头加了
<%@ page language="java" contentType="text/html;charset=gb2312"%>的。

...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacob1 2002-03-24
  • 打赏
  • 举报
回复
哈!zuoxiaoqin(zuoxiaoqin) ,他上面的提示信息不是明摆着是resin的么

同感,你数据库中信息是否没有乱码的呢,也要先检测检测哟
bluefish1218 2002-03-24
  • 打赏
  • 举报
回复
谢谢大家!终于找到问题的所在了,两个主要的错误:
1.从数据库读取字段的问题。
在我那个article表中:title字段在forum字段的前面,在上面的代码中我先提取的是forum字段中的数据,然后提取了title字段的数据,据高人指点,让我按字段先后提取数据,代码改成如下:
sTitle=Str.strcode(rs.getString("title"));
sBBS=Str.strcode(rs.getString("forum"));
...(这里的Str.strcode()是我在第二个错误中要提到的)
到此,第一个问题解决,但是我还想问一句,jsp为什么会有读取字段先后顺序的要求?我不大相信,但是确实改正后错误就没了。点解!

2.中文的问题就好解决了,不少像我一样的新手也会遇到这个问题:吸取各位高人的经验,我抄来了如下的bean,中文问题解决:
package condb;
public class str_filter
{
public String strcode(String str_in)
{
String temp="";
try{
byte[] temp_t=str_in.getBytes("ISO8859_1");
temp=new String(temp_t);
}
catch(Exception e){
}
return temp;
}
};
就是第一个错误中的那个编码转换;
当然在页首还是没忘记加上那句:
<%@ page language="java" contentType="text/html;charset=gb2312"%>

问题解决了,谢谢各位的热心相助,以后肯定还有不少的问题要麻烦大家,谢谢!
by:我初次到csdn发文,那个分数分配是怎么弄阿?
zuoxiaoqin 2002-03-23
  • 打赏
  • 举报
回复
你的数据通过程序输入的呢?还是预先写入的?
如果通过程序输入,加一个中文转换BEAN就可以了。
预先写入的,可能显示出来是乱码。布不知你的服务器是什么?建议:用RESIN试试
bluefish1218 2002-03-23
  • 打赏
  • 举报
回复
谢谢,改成GBK了,但问题依然存在,具体是这样的:
我要显示的是这个字段的数据:title varchar(100)
我在开头加了
<%@ page language="java" contentType="text/html;charset=gb2312"%>的
从上面你也看到了,我用rs.getString("title")来显示的,但是显示出来就是乱码。

很急的问题,请高手关注,谢谢!
weidegong 2002-03-22
  • 打赏
  • 举报
回复
用<%@ page contentType="text/html; charset=GBK" %>试试。我的JSP文件开头用GBK,打开SQL2K显示的就是中文。

81,094

社区成员

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

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