CrazyEnglishing等高手请进,还是上次那个新闻发布问题

huguangwu 2003-10-16 05:25:12
我再发一次吧,希望能解决这个弱智问题


新闻类型表:NewsType
TypeID 主键
TypeContent 类型内容


新闻表:News

ID
TypeID
Title
Content
....

TypeID与NewsType的TypeID表一样,作为外键


然后我建了一个News_View的视图

SELECT dbo.News.ID, dbo.News.Title, dbo.News.Content, dbo.News.PictureID,
dbo.News.FileID, dbo.News.AddTime, dbo.News.FromIP, dbo.News.ReadCount,
dbo.NewsType.*
FROM dbo.News INNER JOIN
dbo.NewsType ON dbo.News.TypeID = dbo.NewsType.TypeID

然后我用自己的Bean查看该视图的信息,Bean没有错,其他的地方用得好好的,我在察看新闻页是这样写的

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="newsBean" scope="page" class="page.page"/>
<%
ResultSet newsrs=null;
String newsid=null;
newsid=request.getParameter("newsid");
String sql=null;
sql="select * from News_View where id="+newsid;

newsrs=newsBean.selQuery(sql);
if(newsrs.next())
{
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><%=newsrs.getString("Title") %></title>
<link href="css.css" rel="stylesheet" type="text/css">
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="476" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="476"><img src="images/news_title.gif" width="476" height="24"></td>
</tr>
<tr>
<td align="center"><font color="black" size=4><%=newsrs.getString("Title") %></font></td>
</tr>
<tr>
<td align="center">新闻类型:<%=newsrs.getString("TypeContent")%>加入时间:<%=newsrs.getDate("AddTime")%> 阅读次数:<%=newsrs.getInt("ReadCount")+1%></td>
</tr>
<tr>
<td><br>  <%=newsrs.getString("Content")%></td>
</tr>
<tr>
<td><img src="images/news_bottom.gif" width="473" height="35" border="0" usemap="#Map"></td>
</tr>
</table>

<map name="Map">
<area shape="rect" coords="394,18,450,32" href="javascript:window.close();">
</map>
</body>
</html>
<%

}
else
{
out.println("数据库中无此新闻");
}
newsrs.close();
%>


可是一加上这个新闻类型,这一项就出错,请大虾告诉我怎么回事
...全文
86 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huguangwu 2003-10-21
  • 打赏
  • 举报
回复
哎,还是没解决,算了,结帐吧
huguangwu 2003-10-18
  • 打赏
  • 举报
回复
CrazyEnglishing有QQ号吗?
aku0708 2003-10-17
  • 打赏
  • 举报
回复
你把这句改成if(newsrs.next())
while(newsrs.next())
试试
huguangwu 2003-10-17
  • 打赏
  • 举报
回复
root cause

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6106)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6263)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataStringDate(JdbcOdbc.java:3434)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataStringDate(JdbcOdbcResultSet.java:5540)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDate(JdbcOdbcResultSet.java:934)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDate(JdbcOdbcResultSet.java:951)
at org.apache.jsp.news_jsp._jspService(news_jsp.java:104)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:315)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.util.SecurityUtil$1.run(SecurityUtil.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:499)
at org.apache.catalina.util.SecurityUtil.execute(SecurityUtil.java:210)
at org.apache.catalina.util.SecurityUtil.doAsPrivilege(SecurityUtil.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:99)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:177)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:271)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at com.sun.enterprise.webservice.EjbWebServiceValve.invoke(EjbWebServiceValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:383)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)

huguangwu 2003-10-17
  • 打赏
  • 举报
回复
type Exception report

message

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

exception

javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:564)
at org.apache.jsp.news_jsp._jspService(news_jsp.java:139)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:315)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.util.SecurityUtil$1.run(SecurityUtil.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:499)
at org.apache.catalina.util.SecurityUtil.execute(SecurityUtil.java:210)
at org.apache.catalina.util.SecurityUtil.doAsPrivilege(SecurityUtil.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:99)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:177)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:271)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at com.sun.enterprise.webservice.EjbWebServiceValve.invoke(EjbWebServiceValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:383)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)


xqi8 2003-10-17
  • 打赏
  • 举报
回复
出错信息帖出来吧!
huguangwu 2003-10-17
  • 打赏
  • 举报
回复
出的就是无效的描述符,然后就是一大堆编译错误。
lynx1111 2003-10-17
  • 打赏
  • 举报
回复
这是我测试好的代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
//pubs为你的数据库的
String user="sa";
String password="aaa";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet newsrs=null;
int newsid;
newsid=1; //request.getParameter("newsid");
String sql=null;
sql="select * from dbo.News_View where id="+newsid;
newsrs=stmt.executeQuery(sql);
if(newsrs.next())
{
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><%=newsrs.getString("Title") %></title>
<link href="css.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="476" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="476"><img src="images/news_title.gif" width="476" height="24"></td>
</tr>
<tr>
<td align="center"><font color="black" size=4><%=newsrs.getString("Title") %></font></td>
</tr>
<tr>
<td align="center">新闻类型:<%=newsrs.getString("TypeContent")%>
加入时间:<%=newsrs.getDate("AddTime")%> 
阅读次数:<%=newsrs.getInt("ReadCount")+1%></td>
</tr>
<tr>
<td><br>  <%=newsrs.getString("Content")%></td>
</tr>
<tr>
<td><img src="images/news_bottom.gif" width="473" height="35" border="0" usemap="#Map"></td>
</tr>
</table>
<%
}

else
{
out.println("数据库中无此新闻");
}
newsrs.close();
%>
<map name="Map">
<area shape="rect" coords="394,18,450,32" href="javascript:window.close();">
</map>
</body>
</html>
-------------------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[News_View]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[News_View]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.News_View
AS
SELECT dbo.News.ID AS ID, dbo.News.Title AS Title, dbo.News.Content AS Content,
dbo.News.PictureID AS PictureID, dbo.News.FileID AS FileID,
dbo.News.AddTime AS AddTime, dbo.News.FromIP AS FromIP,
dbo.News.ReadCount AS ReadCount, dbo.NewsType.TypeID AS TypeID,
dbo.NewsType.TypeContent AS TypeContent
FROM dbo.News INNER JOIN
dbo.NewsType ON dbo.News.TypeID = dbo.NewsType.TypeID

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_News_NewsType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[News] DROP CONSTRAINT FK_News_NewsType
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[News]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[News]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[NewsType]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[NewsType]
GO

CREATE TABLE [dbo].[News] (
[ID] [bigint] IDENTITY (1, 1) NOT NULL ,
[TypeID] [int] NOT NULL ,
[Title] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Content] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[PictureID] [int] NULL ,
[FileID] [int] NULL ,
[AddTime] [datetime] NOT NULL ,
[FromIP] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ReadCount] [bigint] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[NewsType] (
[TypeID] [int] IDENTITY (1, 1) NOT NULL ,
[TypeContent] [varchar] (500) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[News] WITH NOCHECK ADD
CONSTRAINT [PK_News] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[NewsType] WITH NOCHECK ADD
CONSTRAINT [PK_NewsType] PRIMARY KEY CLUSTERED
(
[TypeID]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[News] ADD
CONSTRAINT [FK_News_NewsType] FOREIGN KEY
(
[TypeID]
) REFERENCES [dbo].[NewsType] (
[TypeID]
)
GO
------------------------------------------------
几点建议:
1。你的程序String newsid=null;
newsid=request.getParameter("newsid");
sql="select * from News_View where id="+newsid;
在这里需要用inter.praseint(记不清楚了)转换一下
2。如果确保视图中newsid职唯一可以用if(newsrs.next())
否则要用while(newsrs.next())并且这一段要放到循环外面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><%=newsrs.getString("Title") %></title>
<link href="css.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="476" border="0" cellspacing="0" cellpadding="0">
(尾部一样)
huguangwu 2003-10-17
  • 打赏
  • 举报
回复
帮帮我吧
huguangwu 2003-10-17
  • 打赏
  • 举报
回复
还是一样
9731boy 2003-10-16
  • 打赏
  • 举报
回复
出什么错啊?

81,090

社区成员

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

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