代码:
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030" import="java.sql.*"%>
 <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
 Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;Database=dreamshop","sa","");
 if(conn!=null){
   out.println("connection succeseful!");
 }
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from message");
while(rs.next()){
  out.println("用户名:"+rs.getString(2));
} %>出现错误如下:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /b.jsp at line 96:     out.println("connection succeseful!");
7:  }
8: Statement st=conn.createStatement();
9: ResultSet rs=st.executeQuery("select * from message");
10: while(rs.next()){
11:    out.println("用户名:"+rs.getString(2));
12: } %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'message' 无效。
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.b_jsp._jspService(b_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'message' 无效。
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
org.apache.jsp.b_jsp._jspService(b_jsp.java:63)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.请问如何解决这个问题?数据库和表名都正确

解决方案 »

  1.   

    select * from message 去数据库执行能查出结果吗
      

  2.   

    对象名 'message' 无效表示 数据库表 拼写错误  要么不存在
      

  3.   

    连接数据库对吗?该数据库有message这张表吗?
      

  4.   

    select * from message 其中message在数据库dreamshop下的表名,看一下你的表名是不是写错了,
    还有如果你用的eclipse写的这个程序,在错误中有一个/b.jsp at line 9,可以看到错误的行号
    在eclipse中你试一下,点击右键“show line nubmer ”这个选项,勾上就行了
      

  5.   

    这个情况,有可能是你的message的表在sqlserver中的表名的大小写的问题造成的。
    你可以到你的数据库中看你下你的表的大小写是否是正确的。做查询的时候有些数据库是区分大小写的。在sqlserver这种查询分析器中执行的时候 有可能会不区分大小写。个人的一点观点。我也不指导是否正确。
      

  6.   

    应该是
    “databaseName=数据库名”吧
      

  7.   

    Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;Database=dreamshop","sa","");改为
    Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dreamshop","sa","");
    然后 用System.out.println(conn);看是否连接成功。如果成功,看看数据库dreamshop是否有message这个表
      

  8.   

    将ResultSet rs=st.executeQuery("select * from message");
    改成
    ResultSet rs=st.executeQuery("select * from " + '"' + "message" + '"' ");就OK了!
    不行找我!