点击查询是报错
根据手机号111查询到记录 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '?‰???????' in 'where clause' java里写的语句是
public StringBuffer getQueryResultByPhone()
    {    String condition="SELECT * FROM member Where 学号 = '"+logname+"'";
         queryResultByPhone=f(condition);
         return queryResultByPhone;
    } 
求教 这是哪的错 怎么改

解决方案 »

  1.   

    字段名[学号]变成乱码了,给jdbc连接串指定一下编码吧,如characterEncoding=UTF-8
      

  2.   

    在Action添加个改编码格式
    String deptName = request.getParameter("deptName");
    String t =  new String(deptName.getBytes("ISO-8859-1"),"utf-8");
      

  3.   

    conn.jdbc=jdbc\:mysql\://192.168.1.100/mydatabase?useUnicode\=true&characterEncoding\=UTF-8
      

  4.   

    [Quote=引用 7 楼  的回复:]引用 5 楼  的回复:
    在Action添加个改编码格式
    String deptName = request.getParameter("deptName");
    String t = new String(deptName.getBytes("ISO-8859-1"),"utf-8");
    加在什么位置 具体的加在action里面,你从页面把你的值不是先得到么,是这么得的吧:
    String deptName = request.getParameter("deptName");
    然后把得到的deptName转一下,就是这条代码:
    String t = new String(deptName.getBytes("ISO-8859-1"),"utf-8");
    再把转好的值传到service里面
      

  5.   

    数据库分页总是报错
    <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %> 
    <%@ page language="java" import="java.sql.*" %> <script language="javascript"> 
    function newwin(url) { 
    var newwin=window.open(url,"newwin","toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=yes,width=600,height=450"); 
    newwin.focus(); 
    return false; 

    </script> 
    <script LANGUAGE="javascript"> 
    function submit10() 

    self.location.replace("fenye.jsp") 

    </script> 
    <%//变量声明 
    java.sql.Connection con; //数据库连接对象 
    //java.sql.Statement stmt; //SQL语句对象 
    //java.sql.ResultSet sqlRst; //结果集对象 
    java.lang.String strCon; //数据库连接字符串 
    java.lang.String strSQL; //SQL语句 int intPageSize; //一页显示的记录数 
    int intRowCount; //记录总数 
    int intPageCount; //总页数 
    int intPage; //待显示页码 
    java.lang.String strPage; 
    int i; 
    //设置一页显示的记录数 
    intPageSize = 10; 
    //取得待显示页码 
    strPage = request.getParameter("page"); 
    if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 
    intPage = 1; 

    else{//将字符串转换成整型 
    intPage = java.lang.Integer.parseInt(strPage); 
    if(intPage<1) intPage = 1; 

    //装载JDBC驱动程序
    try
    {
    java.sql.Statement stmt; //SQL语句对象 
    java.sql.ResultSet sqlRst; //结果集对象 
    Class.forName("oracle.jdbc.driver.OracleDriver");
     con = DriverManager.getConnection(
    "jdbc:oracle:thin:@localhost:1521:orcl", "scott", "123");
    stmt = con.createStatement();
    strSQL = "select * from etsa"; 
    //执行SQL语句并获取结果集 
    sqlRst = stmt.executeQuery(strSQL); 
    //获取记录总数 
    sqlRst.last();//??光标在最后一行 
    intRowCount = sqlRst.getRow();//获得当前行号 
    //记算总页数 
    intPageCount = (intRowCount+intPageSize-1) / intPageSize; 
    //调整待显示的页码 
    if(intPage>intPageCount) intPage = intPageCount; 
    %> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>分頁</title> 
    </head> 
    <body> 
    <form method="POST" action=""> 
    第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%>
    <a href="fenye.jsp?page=<%=intPage+1%>">下一页</a>
    <%}%> 
    <%if(intPage>1){%>
    <a href="fenye.jsp?page=<%=intPage-1%>">上一页</a>
    <%}%> 
    转到第:<input type="text" name="page" size="8"> 页 
    <input type="submit" value="GO" name="cndok"> 
    </form> 
    <table border="1" cellspacing="0" cellpadding="0"> <% 
    if(intPageCount>0){ 
    //将记录指针定位到待显示页的第一条记录上 
    sqlRst.absolute((intPage-1) * intPageSize + 1); 
    //显示数据 
    i = 0; 
    String user_id,user_name; 
    while(i<intPageSize && !sqlRst.isAfterLast()){ 
    user_id=sqlRst.getString(1); 
    user_name=sqlRst.getString(2); 
    %> 
    <tr> 
    <td><%=user_id%></td> 
    <td><%=user_name%></td> 
     
    </tr> 
    <% 
    sqlRst.next(); 
    i++; 


    %> 
    </table> 
    </body> 
    </html> 
    <% 
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    //关闭结果集 
    sqlRst.close(); 
    //关闭SQL语句对象 
    stmt.close(); 
    //关闭数据库 
    con.close(); 
    %>
    错误:
    org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 112 in the jsp file: /fenye.jspGenerated servlet error:
        [javac] Compiling 1 source fileD:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\fenye_jsp.java:137: cannot find symbol
    symbol  : variable sqlRst
    location: class org.apache.jsp.fenye_jsp
    sqlRst.close(); 
    ^An error occurred at line: 112 in the jsp file: /fenye.jspGenerated servlet error:
    D:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\fenye_jsp.java:139: cannot find symbol
    symbol  : variable stmt
    location: class org.apache.jsp.fenye_jsp
    stmt.close(); 
    ^
    2 errors
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
    org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:552)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      

  6.   

    看看数据库编码和java代码的编码是否相同,改成一样的就没问题了,这个问题很常见的
      

  7.   

    我这有一个java类
    package tom.jiafei;
    import java.sql.*;
    public class ConditionQuery
    {   String logname ;                  //学号
        String phone;               //姓名
                 
        StringBuffer queryResultByName,  //查询结果
                     queryResultByPhone;
        
               
        public ConditionQuery()
        {  queryResultByName=new StringBuffer();
           queryResultByPhone=new StringBuffer();
           
           try {  Class.forName("com.mysql.jdbc.Driver");  
               }
           catch(ClassNotFoundException e){} 
        }
        public void setPhone(String s)
        {  phone=s.trim();
        }
        public String getPhone()
        {  return phone;
        }
        public void setLogName(String s)
        {  logname=s.trim();
           try{  byte bb[]=logname.getBytes("ISO-8859-1");
                 logname=new String(bb,"gb2312"); 
              }
           catch(Exception e){}
        }
        public String getLogName()
        {  return logname;
        }
       
        
        public StringBuffer getQueryResultByName()
        {    String condition="SELECT * FROM member Where 姓名 = '"+logname+"'";
             queryResultByName=f(condition);
             return queryResultByName;
        }  
        public StringBuffer getQueryResultByPhone()
        {    String condition="SELECT * FROM member Where 手机号 = '"+phone+"'";
             queryResultByPhone=f(condition);
             return queryResultByPhone;
        } 
       
        private StringBuffer f(String condition)
        {  StringBuffer str=new StringBuffer();
           Connection con;
           Statement sql; 
           ResultSet rs;
           try { con=DriverManager.getConnection("jdbc:mysql://localhost/ComeHere","root","root");
                 sql=con.createStatement();
                 rs=sql.executeQuery(condition);
                 str.append("<table border=1>");
                 str.append("<th width=100>"+"手机号");
                 str.append("<th width=100>"+"姓名");
                
                 while(rs.next())
                 {  str.append("<tr>");
                       str.append("<td>"+rs.getString(1)+"</td>");
                       str.append("<td>"+rs.getString(2)+"</td>");
                       str.append("<td>"+rs.getString(3)+"</td>");
                       str.append("<td>"+rs.getString(4)+"</td>");
                       str.append("<td>"+rs.getString(5)+"</td>");
                    str.append("</tr>");
                 }
                str.append("<table border=1>");
                con.close();
               }
           catch(SQLException e) 
               {  str.append(e);
               }
           return str;
       }   
    }   
    页面
    inputCondition.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <HTML><BODY>
    <Font size=2>
    <FORM action="inquireOne.jsp" Method="post">
    <P>手机号查询(根据手机号查询记录):
     <P>输入手机号:
      <Input type=text name="phone">
      <Input type=submit name="g" value="提交">
    </Form>
    <FORM action="inquireTwo.jsp" Method="post">
     <P>姓名查询(根据姓名查询记录):
     <P>输入姓名:
      <Input type=text name="logname">
      <Input type=submit name="g" value="提交">
    </Form></BODY></HTML>inquireOne.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import="tom.jiafei.ConditionQuery" %> 
    <jsp:useBean id="database" class="tom.jiafei.ConditionQuery" scope="request" />
    <jsp:setProperty  name= "database"  property="phone" param="phone"/>
    <HTML><Body>
       根据手机号<jsp:getProperty  name= "database"  property="phone"  />查询到记录
    <BR>  <jsp:getProperty  name= "database"  property="queryResultByPhone" />
    </Body></HTML>inquireTwo.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import="tom.jiafei.ConditionQuery" %> 
    <jsp:useBean id="database" class="tom.jiafei.ConditionQuery" scope="request" />
    <jsp:setProperty  name= "database"  property="logname" param="logname"/>
    <HTML><Body>
       根据姓名<jsp:getProperty  name= "database"  property="logname"  />查询到记录
    <BR>  <jsp:getProperty  name= "database"  property="queryResultBylogname" />
    </Body></HTML>
    我新手 帮我具体说下怎么加吧 谢谢了
      

  8.   

    输入的字符串需要编码解码的。给你两个工具函数用。// URL编码
    static public String encodeUrl(String s){
    if (s == null || s.length() == 0) return s;
    try{
    return URLEncoder.encode(s, "gbk");
    }catch(Exception e){ return s;}
    }
    // URL解码
    static public String decodeUrl(String s){
    if (s == null || s.length() == 0) return s;
    try{
    return new String(s.getBytes("ISO-8859-1"), "GBK");
    }catch(Exception e){ return s;}
    }
    或者是用这个解码。
    static public String getEncodeString(String value) throws UnsupportedEncodingException{
    if (value == null) return null;
    return java.net.URLDecoder.decode(value, "utf-8");
    }总有个能用的。
      

  9.   

    把SQL在数据库中执行以下 看能不能通过。