通过Servlet中的System.out.println(department+major+studClass);
String sql = "select * from studinfo where department=‘"+department+"’and "+"major=‘"+major+"’ and "+"studClass=‘"+studClass+"’";这两句访问数据库相关的内容,前一句在控制台上输出的很正常,后面就报错,出现下面的错误,不知道该怎么办了……页面和数据库中使用的均是utf-8的编码格式!希望大家帮帮忙啊……
java.sql.SQLException: Unknown column '???è????—????§‘???????????????' in 'where clause' Query: select * from studinfo where department=‘计算机科学与技术’ and major=‘信息管理与信息系统’ and studClass=‘1班’ Parameters: []
at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:542)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:399)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:488)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:507)
at com.ccbupt.Graduated_IMS.servlets.checkServlet.doGet(checkServlet.java:52)
at com.ccbupt.Graduated_IMS.servlets.checkServlet.doPost(checkServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    java.sql.SQLException: Unknown column 很明显是没找到对应的数据库列名,你检查一下你的数据的列名和你查询语句中的是否一样!
      

  2.   

     转换编码:可以写个方法
    public static String convertGBK(String s) throws UnsupportedEncodingException{
    return new String(isNull(s).getBytes("iso-8859-1"),"gbk");
    }
      

  3.   

    首先要看MYSQL 数据库的 默认的字符集是什么.  你转换后的字符集要和MYSQL的一致, 
    不然你用SQL传进去的值就不能识别的,  
    确定了之后在通过转换函数将你输入的字符转换下  这样就没问题. 
    sql 进去的应该是 如:
    return new String("SQL中的STRING".getBytes("截面显示的字符集"),"MYSQL数据库的集合");
    查询出来的应该是 : 
    return new String("结果RESULT".getBytes("MYSQL数据库的集合"),"截面显示的字符集");