package cn.com.jobedu.my_case;import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;public class CaseServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String method = request.getParameter("method");
if (method.equals("checkCaseInfo")) {
checkCaseInfo(request, response);
}else if(method.equals("list")){
list(request,response);
}else if(method.equals("delete")){
delete(request,response);
}else if(method.equals("edit")){
preEdit(request,response);
}else if(method.equals("postEditCaseInfo")){
postEditCaseInfo(request,response);
} } public void checkCaseInfo(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String Coname = request.getParameter("Coname");
String Tname = request.getParameter("Tname");
DataSource ds = null; try {
// 通过在context.xml文件,设定的数据源对象的名字,获取数据源对象
Context context = new InitialContext();
ds = (DataSource) context.lookup("java:comp/env/jdbc/case");
} catch (Exception e) {
System.out.println("获取数据源时出错");
}
        List list=null;
try { String sql = "select Co.Coid,Co.Coname,Te.Tname,Cl.Clname,Ca.Catoge,Ca.Catime from CourseInfo Co,TeacherInfo Te,ClassInfo Cl,CaseInfo Ca where Ca.Clid=Cl.Clid and Ca.Coid=Co.Coid and Ca.Tid=Te.Tid and Co.Coname=? and Te.Tname=?";
            String params[]={Coname,Tname};
QueryRunner qr = new QueryRunner(ds);
list = (List) qr.query(sql,params,new BeanListHandler(CaseInfo.class));

} catch (SQLException e) { e.printStackTrace();
}
request.setAttribute("list", list);
request.getRequestDispatcher("/checkCaseInfoResult.jsp").forward(request,
response); }
运行出错,
java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: 无法绑定由多个部分组成的标识符 "Ca.Clid"。 Query: select Co.Coid,Co.Coname,Te.Tname,Cl.Clname,Ca.Catoge,Ca.Catime from CourseInfo Co,TeacherInfo Te,ClassInfo Cl,CaseInfo Ca where Ca.Clid=Cl.Clid and Ca.Coid=Co.Coid and Ca.Tid=Te.Tid and Co.Coname=? and TeacherInfo.Tname=? Parameters: [1, 1]
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:320)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:349)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:268)
at cn.com.jobedu.my_case.CaseServlet.checkCaseInfo(CaseServlet.java:68)
at cn.com.jobedu.my_case.CaseServlet.doPost(CaseServlet.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1293)
at java.lang.Thread.run(Thread.java:619)
2012-5-19 19:25:07 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.checkCaseInfoResult_jsp._jspService(checkCaseInfoResult_jsp.java:96)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
at cn.com.jobedu.my_case.CaseServlet.checkCaseInfo(CaseServlet.java:77)
at cn.com.jobedu.my_case.CaseServlet.doPost(CaseServlet.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1293)
at java.lang.Thread.run(Thread.java:619)
2012-5-19 19:25:07 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet CaseServlet threw exception
java.lang.NullPointerException
at org.apache.jsp.checkCaseInfoResult_jsp._jspService(checkCaseInfoResult_jsp.java:96)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
at cn.com.jobedu.my_case.CaseServlet.checkCaseInfo(CaseServlet.java:77)
at cn.com.jobedu.my_case.CaseServlet.doPost(CaseServlet.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1293)
at java.lang.Thread.run(Thread.java:619)
麻烦各位大侠看看,如何解决?谢谢

解决方案 »

  1.   

    String sql = "select Co.Coid,Co.Coname,Te.Tname,Cl.Clname,Ca.Catoge,Ca.Catime from CourseInfo Co,TeacherInfo Te,ClassInfo Cl,CaseInfo Ca where Ca.Clid=Cl.Clid and Ca.Coid=Co.Coid and Ca.Tid=Te.Tid and Co.Coname=? and Te.Tname=?";==>String sql = "select Co.Coid,Co.Coname,Te.Tname,Cl.Clname,Ca.Catoge,Ca.Catime from CourseInfo Co,TeacherInfo Te,ClassInfo Cl,CaseInfo Ca where Ca.Clid=Cl.Clid and Ca.Coid=Co.Coid and Ca.Tid=Te.Tid and Co.Coname='" + Coname + "' and Te.Tname='" + Tname + '";
      

  2.   

    不行哦,照你的还是有错误,myeclipse中显示符号有错误,就红色部分有错误,
    String sql = "select Co.Coid,Co.Coname,Te.Tname,Cl.Clname,Ca.Catoge,Ca.Catime from CourseInfo Co,TeacherInfo Te,ClassInfo Cl,CaseInfo Ca where Ca.Clid=Cl.Clid and Ca.Coid=Co.Coid and Ca.Tid=Te.Tid and Co.Coname='" + Coname + "' and Te.Tname='" + Tname + '";
    强行调试:
    2012-5-19 21:44:10 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet CaseServlet threw exception
    java.lang.Error: Unresolved compilation problem: 
    Invalid character constant at cn.com.jobedu.my_case.CaseServlet.checkCaseInfo(CaseServlet.java:63)
    at cn.com.jobedu.my_case.CaseServlet.doPost(CaseServlet.java:33)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1293)
    at java.lang.Thread.run(Thread.java:619)
    应该就是符号的问题,该怎样改,求教
      

  3.   

    String sql = "select Co.Coid,Co.Coname,Te.Tname,Cl.Clname,Ca.Catoge,Ca.Catime from CourseInfo Co,TeacherInfo Te,ClassInfo Cl,CaseInfo Ca where Ca.Clid=Cl.Clid and Ca.Coid=Co.Coid and Ca.Tid=Te.Tid and Co.Coname='" + Coname + "' and Te.Tname='" + Tname + "'";